﻿2026-07-26T22:33:02.6436862Z ##[group]Run ./traceable-reqs check --json
2026-07-26T22:33:02.6437227Z [36;1m./traceable-reqs check --json[0m
2026-07-26T22:33:02.6450513Z shell: /usr/bin/bash -e {0}
2026-07-26T22:33:02.6450792Z ##[endgroup]
2026-07-26T22:33:02.7182827Z {
2026-07-26T22:33:02.7183571Z   "schemaVersion": 1,
2026-07-26T22:33:02.7184034Z   "summary": {
2026-07-26T22:33:02.7184452Z     "requirementCount": 593,
2026-07-26T22:33:02.7184905Z     "completeCount": 593,
2026-07-26T22:33:02.7185350Z     "incompleteCount": 0,
2026-07-26T22:33:02.7185778Z     "findingCount": 0
2026-07-26T22:33:02.7186160Z   },
2026-07-26T22:33:02.7186504Z   "requirements": [
2026-07-26T22:33:02.7186874Z     {
2026-07-26T22:33:02.7187286Z       "id": "REQ-ACTIVITY-INFO-PULL",
2026-07-26T22:33:02.7189801Z       "title": "The endpoint's current activity state (busy|idle) is readable via `spt api endpoint-info` — a point-in-time read of the perch idle sentinel, for consumers that need a check rather than a stream (ADR-0048 decision 1, pull avenue; operator-ruled 2026-07-24). Additive key, N-1-safe per the additive-evolution posture.",
2026-07-26T22:33:02.7191793Z       "requiredStages": [
2026-07-26T22:33:02.7192221Z         "doc",
2026-07-26T22:33:02.7192592Z         "impl",
2026-07-26T22:33:02.7192964Z         "unit"
2026-07-26T22:33:02.7193326Z       ],
2026-07-26T22:33:02.7193668Z       "stages": {
2026-07-26T22:33:02.7194055Z         "doc": {
2026-07-26T22:33:02.7194451Z           "complete": true,
2026-07-26T22:33:02.7194871Z           "evidence": [
2026-07-26T22:33:02.7195256Z             {
2026-07-26T22:33:02.7195703Z               "path": "docs/adr/0048-idle-edge-contract.md",
2026-07-26T22:33:02.7196233Z               "line": 43
2026-07-26T22:33:02.7196562Z             }
2026-07-26T22:33:02.7196925Z           ]
2026-07-26T22:33:02.7197214Z         },
2026-07-26T22:33:02.7197499Z         "impl": {
2026-07-26T22:33:02.7197809Z           "complete": true,
2026-07-26T22:33:02.7198152Z           "evidence": [
2026-07-26T22:33:02.7198467Z             {
2026-07-26T22:33:02.7198824Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:02.7199335Z               "line": 457
2026-07-26T22:33:02.7199669Z             },
2026-07-26T22:33:02.7199955Z             {
2026-07-26T22:33:02.7200310Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7200723Z               "line": 894
2026-07-26T22:33:02.7201047Z             },
2026-07-26T22:33:02.7201339Z             {
2026-07-26T22:33:02.7201700Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7202115Z               "line": 1016
2026-07-26T22:33:02.7202440Z             }
2026-07-26T22:33:02.7202728Z           ]
2026-07-26T22:33:02.7203018Z         },
2026-07-26T22:33:02.7203304Z         "int": {
2026-07-26T22:33:02.7203618Z           "complete": false,
2026-07-26T22:33:02.7203961Z           "evidence": []
2026-07-26T22:33:02.7204276Z         },
2026-07-26T22:33:02.7204563Z         "unit": {
2026-07-26T22:33:02.7204882Z           "complete": true,
2026-07-26T22:33:02.7205211Z           "evidence": [
2026-07-26T22:33:02.7205525Z             {
2026-07-26T22:33:02.7205868Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7206684Z               "line": 1144
2026-07-26T22:33:02.7207009Z             },
2026-07-26T22:33:02.7207309Z             {
2026-07-26T22:33:02.7207657Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7208082Z               "line": 1175
2026-07-26T22:33:02.7208407Z             }
2026-07-26T22:33:02.7208688Z           ]
2026-07-26T22:33:02.7209017Z         }
2026-07-26T22:33:02.7209275Z       }
2026-07-26T22:33:02.7209546Z     },
2026-07-26T22:33:02.7209818Z     {
2026-07-26T22:33:02.7210138Z       "id": "REQ-ACTIVITY-LINK-PUSH",
2026-07-26T22:33:02.7216160Z       "title": "An owned Shell observes its owner's busy/idle transitions as an activity frame on the EXISTING shell-link event stream (ADR-0048 decisions 1-3; perri contract-lock 2026-07-24). Link-scoped (owner implied by the link token — no new verb, no addressing surface). Drive-class semantics: ephemeral, latest-wins, current-state-carrying; redundant same-state resend is a harmless no-op (consumer derives edges); NEVER spooled or replayed (stale transitions are actively wrong). Both directions (busy->idle, idle->busy). Current state emitted on EVERY link establishment and re-link — restart resync is free. Latency promise = BOUNDED OBSERVATION: a frame per transition, sub-second class, never hard-real-time; each frame carries the TRANSITION TIMESTAMP (when the sentinel flipped, not when the frame was emitted) so edge-anchored consumers self-correct emission latency. Frame name/attrs publish in the shell frame vocabulary doc (REQ-SHELL-FRAME-VOCAB lineage) — doc stage rides there. Gate: int — a live shell link sees busy->idle and idle->busy frames with truthful transition timestamps, a re-link re-emits current state, and a transition during link-down is represented by the re-link emit (current state), never a replayed backlog.",
2026-07-26T22:33:02.7221834Z       "requiredStages": [
2026-07-26T22:33:02.7222163Z         "doc",
2026-07-26T22:33:02.7222459Z         "impl",
2026-07-26T22:33:02.7222777Z         "unit",
2026-07-26T22:33:02.7223078Z         "int"
2026-07-26T22:33:02.7223383Z       ],
2026-07-26T22:33:02.7223708Z       "stages": {
2026-07-26T22:33:02.7223983Z         "doc": {
2026-07-26T22:33:02.7224252Z           "complete": true,
2026-07-26T22:33:02.7224538Z           "evidence": [
2026-07-26T22:33:02.7224829Z             {
2026-07-26T22:33:02.7225086Z               "path": "docs-site/src/shells/frames.md",
2026-07-26T22:33:02.7225378Z               "line": 209
2026-07-26T22:33:02.7225607Z             }
2026-07-26T22:33:02.7225812Z           ]
2026-07-26T22:33:02.7226021Z         },
2026-07-26T22:33:02.7226218Z         "impl": {
2026-07-26T22:33:02.7226447Z           "complete": true,
2026-07-26T22:33:02.7226683Z           "evidence": [
2026-07-26T22:33:02.7226904Z             {
2026-07-26T22:33:02.7227165Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7227471Z               "line": 26
2026-07-26T22:33:02.7227703Z             },
2026-07-26T22:33:02.7227913Z             {
2026-07-26T22:33:02.7228171Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7228462Z               "line": 59
2026-07-26T22:33:02.7228681Z             },
2026-07-26T22:33:02.7228881Z             {
2026-07-26T22:33:02.7229202Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7229494Z               "line": 69
2026-07-26T22:33:02.7229708Z             },
2026-07-26T22:33:02.7229907Z             {
2026-07-26T22:33:02.7230161Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7230456Z               "line": 104
2026-07-26T22:33:02.7230672Z             },
2026-07-26T22:33:02.7230880Z             {
2026-07-26T22:33:02.7231138Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7231433Z               "line": 119
2026-07-26T22:33:02.7231673Z             },
2026-07-26T22:33:02.7231876Z             {
2026-07-26T22:33:02.7232135Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7232575Z               "line": 137
2026-07-26T22:33:02.7232798Z             },
2026-07-26T22:33:02.7233009Z             {
2026-07-26T22:33:02.7233262Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7233548Z               "line": 179
2026-07-26T22:33:02.7233776Z             },
2026-07-26T22:33:02.7233981Z             {
2026-07-26T22:33:02.7234245Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7234543Z               "line": 189
2026-07-26T22:33:02.7234774Z             },
2026-07-26T22:33:02.7234984Z             {
2026-07-26T22:33:02.7235232Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7235523Z               "line": 211
2026-07-26T22:33:02.7235753Z             },
2026-07-26T22:33:02.7235956Z             {
2026-07-26T22:33:02.7236204Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7236663Z               "line": 233
2026-07-26T22:33:02.7236896Z             },
2026-07-26T22:33:02.7237103Z             {
2026-07-26T22:33:02.7237367Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.7237682Z               "line": 246
2026-07-26T22:33:02.7237906Z             },
2026-07-26T22:33:02.7238116Z             {
2026-07-26T22:33:02.7238383Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:02.7238798Z               "line": 115
2026-07-26T22:33:02.7239256Z             },
2026-07-26T22:33:02.7239550Z             {
2026-07-26T22:33:02.7240091Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:02.7240491Z               "line": 142
2026-07-26T22:33:02.7240783Z             },
2026-07-26T22:33:02.7241150Z             {
2026-07-26T22:33:02.7241498Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:02.7241909Z               "line": 182
2026-07-26T22:33:02.7242313Z             },
2026-07-26T22:33:02.7242677Z             {
2026-07-26T22:33:02.7243101Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:02.7243503Z               "line": 192
2026-07-26T22:33:02.7243803Z             },
2026-07-26T22:33:02.7244170Z             {
2026-07-26T22:33:02.7244504Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:02.7244927Z               "line": 200
2026-07-26T22:33:02.7245248Z             },
2026-07-26T22:33:02.7245539Z             {
2026-07-26T22:33:02.7245935Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:02.7277077Z               "line": 290
2026-07-26T22:33:02.7277397Z             },
2026-07-26T22:33:02.7277644Z             {
2026-07-26T22:33:02.7278064Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:02.7278498Z               "line": 358
2026-07-26T22:33:02.7278822Z             },
2026-07-26T22:33:02.7279380Z             {
2026-07-26T22:33:02.7279770Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:02.7280194Z               "line": 385
2026-07-26T22:33:02.7280523Z             },
2026-07-26T22:33:02.7280809Z             {
2026-07-26T22:33:02.7281177Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-07-26T22:33:02.7281602Z               "line": 149
2026-07-26T22:33:02.7281933Z             },
2026-07-26T22:33:02.7282223Z             {
2026-07-26T22:33:02.7282589Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:02.7283008Z               "line": 83
2026-07-26T22:33:02.7283337Z             },
2026-07-26T22:33:02.7283629Z             {
2026-07-26T22:33:02.7283981Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:02.7284388Z               "line": 421
2026-07-26T22:33:02.7300571Z             },
2026-07-26T22:33:02.7300914Z             {
2026-07-26T22:33:02.7301299Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:02.7301744Z               "line": 443
2026-07-26T22:33:02.7302116Z             },
2026-07-26T22:33:02.7302417Z             {
2026-07-26T22:33:02.7302778Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:02.7303542Z               "line": 127
2026-07-26T22:33:02.7303876Z             },
2026-07-26T22:33:02.7304171Z             {
2026-07-26T22:33:02.7304520Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:02.7304936Z               "line": 358
2026-07-26T22:33:02.7305255Z             },
2026-07-26T22:33:02.7305551Z             {
2026-07-26T22:33:02.7305907Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:02.7306329Z               "line": 454
2026-07-26T22:33:02.7306662Z             },
2026-07-26T22:33:02.7306963Z             {
2026-07-26T22:33:02.7307330Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7307755Z               "line": 521
2026-07-26T22:33:02.7308089Z             }
2026-07-26T22:33:02.7308383Z           ]
2026-07-26T22:33:02.7308830Z         },
2026-07-26T22:33:02.7309215Z         "int": {
2026-07-26T22:33:02.7309544Z           "complete": true,
2026-07-26T22:33:02.7309896Z           "evidence": [
2026-07-26T22:33:02.7310226Z             {
2026-07-26T22:33:02.7310623Z               "path": "crates/spt/tests/activity_link_push_e2e.rs",
2026-07-26T22:33:02.7311079Z               "line": 35
2026-07-26T22:33:02.7311408Z             }
2026-07-26T22:33:02.7311694Z           ]
2026-07-26T22:33:02.7311980Z         },
2026-07-26T22:33:02.7312271Z         "unit": {
2026-07-26T22:33:02.7312596Z           "complete": true,
2026-07-26T22:33:02.7312948Z           "evidence": [
2026-07-26T22:33:02.7313268Z             {
2026-07-26T22:33:02.7313646Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7314078Z               "line": 255
2026-07-26T22:33:02.7314417Z             },
2026-07-26T22:33:02.7314717Z             {
2026-07-26T22:33:02.7315090Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7315543Z               "line": 266
2026-07-26T22:33:02.7315877Z             },
2026-07-26T22:33:02.7316178Z             {
2026-07-26T22:33:02.7316560Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7316989Z               "line": 282
2026-07-26T22:33:02.7317313Z             },
2026-07-26T22:33:02.7317608Z             {
2026-07-26T22:33:02.7317962Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7318387Z               "line": 297
2026-07-26T22:33:02.7318707Z             },
2026-07-26T22:33:02.7319052Z             {
2026-07-26T22:33:02.7319409Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7319817Z               "line": 316
2026-07-26T22:33:02.7320132Z             },
2026-07-26T22:33:02.7320423Z             {
2026-07-26T22:33:02.7320790Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7321216Z               "line": 336
2026-07-26T22:33:02.7321541Z             },
2026-07-26T22:33:02.7321834Z             {
2026-07-26T22:33:02.7322192Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7322616Z               "line": 375
2026-07-26T22:33:02.7322945Z             },
2026-07-26T22:33:02.7323236Z             {
2026-07-26T22:33:02.7323612Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7324026Z               "line": 400
2026-07-26T22:33:02.7324357Z             },
2026-07-26T22:33:02.7324629Z             {
2026-07-26T22:33:02.7324991Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7325407Z               "line": 431
2026-07-26T22:33:02.7325722Z             },
2026-07-26T22:33:02.7326009Z             {
2026-07-26T22:33:02.7326361Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7326784Z               "line": 448
2026-07-26T22:33:02.7327101Z             },
2026-07-26T22:33:02.7327402Z             {
2026-07-26T22:33:02.7327764Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:02.7328188Z               "line": 459
2026-07-26T22:33:02.7328503Z             },
2026-07-26T22:33:02.7328784Z             {
2026-07-26T22:33:02.7329351Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:02.7329772Z               "line": 496
2026-07-26T22:33:02.7330101Z             },
2026-07-26T22:33:02.7330387Z             {
2026-07-26T22:33:02.7330754Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:02.7331171Z               "line": 535
2026-07-26T22:33:02.7331500Z             },
2026-07-26T22:33:02.7331791Z             {
2026-07-26T22:33:02.7332158Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:02.7332580Z               "line": 556
2026-07-26T22:33:02.7332904Z             },
2026-07-26T22:33:02.7333200Z             {
2026-07-26T22:33:02.7333566Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:02.7333978Z               "line": 581
2026-07-26T22:33:02.7334292Z             },
2026-07-26T22:33:02.7334724Z             {
2026-07-26T22:33:02.7335081Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:02.7335514Z               "line": 595
2026-07-26T22:33:02.7335833Z             },
2026-07-26T22:33:02.7336129Z             {
2026-07-26T22:33:02.7336482Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-07-26T22:33:02.7336912Z               "line": 489
2026-07-26T22:33:02.7337227Z             },
2026-07-26T22:33:02.7337515Z             {
2026-07-26T22:33:02.7337880Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-07-26T22:33:02.7338319Z               "line": 506
2026-07-26T22:33:02.7338658Z             },
2026-07-26T22:33:02.7339024Z             {
2026-07-26T22:33:02.7339382Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:02.7339803Z               "line": 775
2026-07-26T22:33:02.7340154Z             },
2026-07-26T22:33:02.7340380Z             {
2026-07-26T22:33:02.7340618Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:02.7340919Z               "line": 810
2026-07-26T22:33:02.7341134Z             },
2026-07-26T22:33:02.7341406Z             {
2026-07-26T22:33:02.7341759Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:02.7342202Z               "line": 843
2026-07-26T22:33:02.7342497Z             },
2026-07-26T22:33:02.7342737Z             {
2026-07-26T22:33:02.7342983Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:02.7343283Z               "line": 875
2026-07-26T22:33:02.7343545Z             },
2026-07-26T22:33:02.7343779Z             {
2026-07-26T22:33:02.7344022Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:02.7344314Z               "line": 693
2026-07-26T22:33:02.7344533Z             },
2026-07-26T22:33:02.7344732Z             {
2026-07-26T22:33:02.7344972Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:02.7345247Z               "line": 776
2026-07-26T22:33:02.7345477Z             }
2026-07-26T22:33:02.7345683Z           ]
2026-07-26T22:33:02.7345874Z         }
2026-07-26T22:33:02.7346064Z       }
2026-07-26T22:33:02.7346255Z     },
2026-07-26T22:33:02.7346456Z     {
2026-07-26T22:33:02.7346679Z       "id": "REQ-ACTIVITY-LIST-JSON",
2026-07-26T22:33:02.7347895Z       "title": "`spt endpoint list --json` carries a per-endpoint `activity` (busy|idle) key, for consumers surveying the idle/busy state of many endpoints at once (ADR-0048 decision 1, roster pull avenue; operator addition 2026-07-24). Additive key, N-1-safe; kin the flynn 2026-07-06 last-active/description/adapter list-enrichment seed (same additive posture, may ride together).",
2026-07-26T22:33:02.7349161Z       "requiredStages": [
2026-07-26T22:33:02.7349404Z         "doc",
2026-07-26T22:33:02.7349618Z         "impl",
2026-07-26T22:33:02.7349819Z         "unit"
2026-07-26T22:33:02.7350015Z       ],
2026-07-26T22:33:02.7350219Z       "stages": {
2026-07-26T22:33:02.7350439Z         "doc": {
2026-07-26T22:33:02.7350657Z           "complete": true,
2026-07-26T22:33:02.7350911Z           "evidence": [
2026-07-26T22:33:02.7351117Z             {
2026-07-26T22:33:02.7351380Z               "path": "docs-site/src/reference/json-shapes.md",
2026-07-26T22:33:02.7351822Z               "line": 411
2026-07-26T22:33:02.7352056Z             },
2026-07-26T22:33:02.7352262Z             {
2026-07-26T22:33:02.7352519Z               "path": "docs/adr/0048-idle-edge-contract.md",
2026-07-26T22:33:02.7352809Z               "line": 43
2026-07-26T22:33:02.7353024Z             }
2026-07-26T22:33:02.7353221Z           ]
2026-07-26T22:33:02.7353414Z         },
2026-07-26T22:33:02.7353610Z         "impl": {
2026-07-26T22:33:02.7353834Z           "complete": true,
2026-07-26T22:33:02.7354081Z           "evidence": [
2026-07-26T22:33:02.7354297Z             {
2026-07-26T22:33:02.7354545Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:02.7354817Z               "line": 458
2026-07-26T22:33:02.7355045Z             },
2026-07-26T22:33:02.7355523Z             {
2026-07-26T22:33:02.7355759Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7356028Z               "line": 3146
2026-07-26T22:33:02.7356257Z             },
2026-07-26T22:33:02.7356463Z             {
2026-07-26T22:33:02.7356696Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7356977Z               "line": 3303
2026-07-26T22:33:02.7357202Z             }
2026-07-26T22:33:02.7357403Z           ]
2026-07-26T22:33:02.7357597Z         },
2026-07-26T22:33:02.7357797Z         "int": {
2026-07-26T22:33:02.7358018Z           "complete": false,
2026-07-26T22:33:02.7358265Z           "evidence": []
2026-07-26T22:33:02.7358493Z         },
2026-07-26T22:33:02.7358684Z         "unit": {
2026-07-26T22:33:02.7358909Z           "complete": true,
2026-07-26T22:33:02.7359210Z           "evidence": [
2026-07-26T22:33:02.7359421Z             {
2026-07-26T22:33:02.7359659Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7359936Z               "line": 14483
2026-07-26T22:33:02.7360159Z             },
2026-07-26T22:33:02.7360359Z             {
2026-07-26T22:33:02.7360590Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7360885Z               "line": 14524
2026-07-26T22:33:02.7361116Z             }
2026-07-26T22:33:02.7361320Z           ]
2026-07-26T22:33:02.7361515Z         }
2026-07-26T22:33:02.7385896Z       }
2026-07-26T22:33:02.7386220Z     },
2026-07-26T22:33:02.7386512Z     {
2026-07-26T22:33:02.7386902Z       "id": "REQ-ADAPTER-ADD-SURFACE-ERRORS",
2026-07-26T22:33:02.7389879Z       "title": "Bug #1: adapter add runs the install-as-first-update via conduct (cli.rs:6963) which on a non-zero exit prints only the exit code and DISCARDS the subprocess stdout/stderr, so the real error is invisible (the failure itself does propagate). Fix: include out.stderr/stdout in the ADAPTER_INSTALL_FAIL message (mirror run_update_post_step). Operator ruling: ALSO run the [update.post] composite step at install-time (today it runs only on explicit adapter update), so an install both surfaces detail and completes the delegated post-step. See docs/NEXT-MILESTONE-BUG-TRIAGE.md #1.",
2026-07-26T22:33:02.7392594Z       "requiredStages": [
2026-07-26T22:33:02.7392945Z         "impl",
2026-07-26T22:33:02.7393243Z         "unit"
2026-07-26T22:33:02.7393539Z       ],
2026-07-26T22:33:02.7393825Z       "stages": {
2026-07-26T22:33:02.7394130Z         "doc": {
2026-07-26T22:33:02.7394454Z           "complete": false,
2026-07-26T22:33:02.7394808Z           "evidence": []
2026-07-26T22:33:02.7395142Z         },
2026-07-26T22:33:02.7395432Z         "impl": {
2026-07-26T22:33:02.7395759Z           "complete": true,
2026-07-26T22:33:02.7396113Z           "evidence": [
2026-07-26T22:33:02.7396423Z             {
2026-07-26T22:33:02.7396766Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7397190Z               "line": 10204
2026-07-26T22:33:02.7397533Z             },
2026-07-26T22:33:02.7397833Z             {
2026-07-26T22:33:02.7398174Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7398617Z               "line": 10233
2026-07-26T22:33:02.7399023Z             },
2026-07-26T22:33:02.7399557Z             {
2026-07-26T22:33:02.7399905Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7400316Z               "line": 10391
2026-07-26T22:33:02.7400649Z             }
2026-07-26T22:33:02.7400948Z           ]
2026-07-26T22:33:02.7401236Z         },
2026-07-26T22:33:02.7401518Z         "int": {
2026-07-26T22:33:02.7401852Z           "complete": false,
2026-07-26T22:33:02.7402219Z           "evidence": []
2026-07-26T22:33:02.7402558Z         },
2026-07-26T22:33:02.7402859Z         "unit": {
2026-07-26T22:33:02.7403174Z           "complete": true,
2026-07-26T22:33:02.7403538Z           "evidence": [
2026-07-26T22:33:02.7403876Z             {
2026-07-26T22:33:02.7404233Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7404651Z               "line": 20098
2026-07-26T22:33:02.7404985Z             }
2026-07-26T22:33:02.7405435Z           ]
2026-07-26T22:33:02.7405731Z         }
2026-07-26T22:33:02.7406002Z       }
2026-07-26T22:33:02.7406301Z     },
2026-07-26T22:33:02.7406596Z     {
2026-07-26T22:33:02.7406925Z       "id": "REQ-ADAPTER-FLOOR-ENFORCE",
2026-07-26T22:33:02.7425234Z       "title": "F-5 (REMOTE-TRUTH triage §F-5 + doyle rulings 2026-07-05): BOTH adapter acquisition verbs (spt adapter add + spt adapter update) REFUSE when the installed spt-core is BELOW the adapter's declared [adapter].min_spt_core_version floor — with an F-1 operator refusal naming the installed core, the floor, and the next action (update spt-core first). ROOT: the floor was PARSED + required (manifest.rs) but never compared to the running core — dead enforcement; and the [update].version_check knob that gated it was DOC'D-BUT-DEAD (never read by any production path — a contract lie). RULINGS: RETIRE version_check (drop the manifest field + schema + docs + the cfg(test) literals; a pre-existing manifest still setting it deserializes fine — serde ignores the unknown key, no deny_unknown_fields, so retiring is back-compatible); SEMVER-compare NOT string-compare (the 0.9.0 < 0.25.0 lexical trap); enforce on BOTH verbs; nothing installs / registry untouched on refuse (binds both verbs, no residuals). FIX: (1) a pure spt-runtime version_meets_floor(core, floor) -> bool (numeric per-component: split '.', u64, missing→0, non-numeric→0, first-diff decides, equal-when-zero-padded ⇒ satisfied) — mirrors the CLI version_is_newer parse (same numeric model, different question: freshness=strictly-newer vs floor=at-least). (2) ADD: the gate lives INSIDE registry::register (the choke point) via a register_with_core(core_version) seam register() delegates to with env!(CARGO_PKG_VERSION) — the floor check runs right after the manifest parse, BEFORE any registry write, returning the typed RegistryError::CoreFloor{adapter,core,floor} (Display = the ONE F-1 refusal both verbs surface); nothing recorded on refuse. (3) UPDATE: a PRE-SWAP peek (staged_floor_ok) extracts the staged .spt to a THROWAWAY temp, parses its manifest floor, and refuses BEFORE apply_release_crc_swap mutates the live pointer-mode home — so a refusal (or an unverifiable floor: FAIL-CLOSED) leaves the live install BYTE-UNTOUCHED; register@8932 stays as the defense-in-depth backstop for every other entry path. doyle bind: the register-only gate would let the crc-swap replace the live files with a floor-violating version while the record refuses (record and reality disagree — the exact contract-lie shape this milestone kills), so the pre-swap peek is the only correct answer. Red-first: perri negative repro on ADD (fresh home + synthetic low core + high-floor manifest → CoreFloor refuse, registry untouched) + the UPDATE pre-swap refuse (live home byte-untouched) + a floor-met positive control (0.25.0-on-0.25.0 installs); + version_meets_floor table incl. the 0.9<0.25 trap.",
2026-07-26T22:33:02.7436871Z       "requiredStages": [
2026-07-26T22:33:02.7437234Z         "doc",
2026-07-26T22:33:02.7437577Z         "impl",
2026-07-26T22:33:02.7437885Z         "unit"
2026-07-26T22:33:02.7438186Z       ],
2026-07-26T22:33:02.7438482Z       "stages": {
2026-07-26T22:33:02.7439101Z         "doc": {
2026-07-26T22:33:02.7439430Z           "complete": true,
2026-07-26T22:33:02.7439784Z           "evidence": [
2026-07-26T22:33:02.7440102Z             {
2026-07-26T22:33:02.7440433Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:02.7440843Z               "line": 43
2026-07-26T22:33:02.7441182Z             }
2026-07-26T22:33:02.7441477Z           ]
2026-07-26T22:33:02.7441768Z         },
2026-07-26T22:33:02.7442059Z         "impl": {
2026-07-26T22:33:02.7442393Z           "complete": true,
2026-07-26T22:33:02.7442746Z           "evidence": [
2026-07-26T22:33:02.7443064Z             {
2026-07-26T22:33:02.7443434Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.7443906Z               "line": 114
2026-07-26T22:33:02.7444240Z             },
2026-07-26T22:33:02.7444550Z             {
2026-07-26T22:33:02.7445089Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:02.7445541Z               "line": 312
2026-07-26T22:33:02.7445891Z             },
2026-07-26T22:33:02.7446229Z             {
2026-07-26T22:33:02.7446611Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7447074Z               "line": 10703
2026-07-26T22:33:02.7447465Z             }
2026-07-26T22:33:02.7447794Z           ]
2026-07-26T22:33:02.7448113Z         },
2026-07-26T22:33:02.7448426Z         "int": {
2026-07-26T22:33:02.7448788Z           "complete": false,
2026-07-26T22:33:02.7449281Z           "evidence": []
2026-07-26T22:33:02.7449628Z         },
2026-07-26T22:33:02.7449925Z         "unit": {
2026-07-26T22:33:02.7450258Z           "complete": true,
2026-07-26T22:33:02.7450634Z           "evidence": [
2026-07-26T22:33:02.7450988Z             {
2026-07-26T22:33:02.7451398Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.7451885Z               "line": 2169
2026-07-26T22:33:02.7452333Z             },
2026-07-26T22:33:02.7452905Z             {
2026-07-26T22:33:02.7453359Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:02.7454018Z               "line": 998
2026-07-26T22:33:02.7454414Z             },
2026-07-26T22:33:02.7454866Z             {
2026-07-26T22:33:02.7455344Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:02.7455883Z               "line": 1034
2026-07-26T22:33:02.7456324Z             },
2026-07-26T22:33:02.7456822Z             {
2026-07-26T22:33:02.7457376Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7457939Z               "line": 14996
2026-07-26T22:33:02.7458435Z             },
2026-07-26T22:33:02.7458841Z             {
2026-07-26T22:33:02.7459616Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7460132Z               "line": 15026
2026-07-26T22:33:02.7460532Z             }
2026-07-26T22:33:02.7460870Z           ]
2026-07-26T22:33:02.7461199Z         }
2026-07-26T22:33:02.7461530Z       }
2026-07-26T22:33:02.7461849Z     },
2026-07-26T22:33:02.7462187Z     {
2026-07-26T22:33:02.7462526Z       "id": "REQ-ADAPTER-GH-TRANSPORT",
2026-07-26T22:33:02.7464583Z       "title": "The `gh_release` avenue (and `spt adapter add --release`) gain a fetch `transport`: `https` (current reqwest direct, public), `gh` (shell the pre-authorized `gh` CLI — the private-repo path; `gh` honors OAuth and `GH_TOKEN`, so spt custodies no token), or `auto` (default: prefer `gh` when installed+authed, else HTTPS). `--gh`/`--https` force it on `add`. Additive over the existing fetch path; verify->extract->register downstream is unchanged. (v0.13.2)",
2026-07-26T22:33:02.7466794Z       "requiredStages": [
2026-07-26T22:33:02.7467183Z         "doc",
2026-07-26T22:33:02.7467574Z         "impl",
2026-07-26T22:33:02.7467908Z         "unit"
2026-07-26T22:33:02.7468232Z       ],
2026-07-26T22:33:02.7468599Z       "stages": {
2026-07-26T22:33:02.7469010Z         "doc": {
2026-07-26T22:33:02.7469439Z           "complete": true,
2026-07-26T22:33:02.7469833Z           "evidence": [
2026-07-26T22:33:02.7470200Z             {
2026-07-26T22:33:02.7470877Z               "path": "CONTEXT.md",
2026-07-26T22:33:02.7471298Z               "line": 101
2026-07-26T22:33:02.7471703Z             },
2026-07-26T22:33:02.7472034Z             {
2026-07-26T22:33:02.7472424Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:02.7472833Z               "line": 487
2026-07-26T22:33:02.7473182Z             }
2026-07-26T22:33:02.7473554Z           ]
2026-07-26T22:33:02.7473869Z         },
2026-07-26T22:33:02.7474232Z         "impl": {
2026-07-26T22:33:02.7474594Z           "complete": true,
2026-07-26T22:33:02.7474980Z           "evidence": [
2026-07-26T22:33:02.7475347Z             {
2026-07-26T22:33:02.7475811Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.7476254Z               "line": 590
2026-07-26T22:33:02.7476650Z             },
2026-07-26T22:33:02.7476993Z             {
2026-07-26T22:33:02.7477523Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.7477952Z               "line": 646
2026-07-26T22:33:02.7478276Z             },
2026-07-26T22:33:02.7478640Z             {
2026-07-26T22:33:02.7479049Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7479450Z               "line": 5751
2026-07-26T22:33:02.7479846Z             },
2026-07-26T22:33:02.7480135Z             {
2026-07-26T22:33:02.7480483Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7480875Z               "line": 5773
2026-07-26T22:33:02.7481189Z             },
2026-07-26T22:33:02.7481529Z             {
2026-07-26T22:33:02.7481844Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7482201Z               "line": 6166
2026-07-26T22:33:02.7482580Z             },
2026-07-26T22:33:02.7482875Z             {
2026-07-26T22:33:02.7483232Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7483608Z               "line": 6178
2026-07-26T22:33:02.7483933Z             },
2026-07-26T22:33:02.7484271Z             {
2026-07-26T22:33:02.7484581Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7484953Z               "line": 6207
2026-07-26T22:33:02.7485314Z             },
2026-07-26T22:33:02.7485607Z             {
2026-07-26T22:33:02.7485965Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7486338Z               "line": 6441
2026-07-26T22:33:02.7486667Z             },
2026-07-26T22:33:02.7486991Z             {
2026-07-26T22:33:02.7487301Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7487673Z               "line": 10268
2026-07-26T22:33:02.7488037Z             },
2026-07-26T22:33:02.7488347Z             {
2026-07-26T22:33:02.7488690Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7489195Z               "line": 11147
2026-07-26T22:33:02.7489534Z             },
2026-07-26T22:33:02.7489868Z             {
2026-07-26T22:33:02.7490202Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7490555Z               "line": 11321
2026-07-26T22:33:02.7490925Z             },
2026-07-26T22:33:02.7491221Z             {
2026-07-26T22:33:02.7491564Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7491950Z               "line": 11391
2026-07-26T22:33:02.7492255Z             },
2026-07-26T22:33:02.7492583Z             {
2026-07-26T22:33:02.7492917Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7493267Z               "line": 11417
2026-07-26T22:33:02.7493634Z             }
2026-07-26T22:33:02.7493924Z           ]
2026-07-26T22:33:02.7494235Z         },
2026-07-26T22:33:02.7494540Z         "int": {
2026-07-26T22:33:02.7494850Z           "complete": false,
2026-07-26T22:33:02.7495232Z           "evidence": []
2026-07-26T22:33:02.7495547Z         },
2026-07-26T22:33:02.7495822Z         "unit": {
2026-07-26T22:33:02.7496196Z           "complete": true,
2026-07-26T22:33:02.7496511Z           "evidence": [
2026-07-26T22:33:02.7496845Z             {
2026-07-26T22:33:02.7497193Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7497556Z               "line": 13701
2026-07-26T22:33:02.7498065Z             },
2026-07-26T22:33:02.7498360Z             {
2026-07-26T22:33:02.7498672Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7499235Z               "line": 13719
2026-07-26T22:33:02.7499559Z             },
2026-07-26T22:33:02.7499874Z             {
2026-07-26T22:33:02.7500203Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7500575Z               "line": 13915
2026-07-26T22:33:02.7500928Z             },
2026-07-26T22:33:02.7501227Z             {
2026-07-26T22:33:02.7501523Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7501923Z               "line": 13931
2026-07-26T22:33:02.7502238Z             },
2026-07-26T22:33:02.7502538Z             {
2026-07-26T22:33:02.7502877Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7503230Z               "line": 13958
2026-07-26T22:33:02.7503705Z             },
2026-07-26T22:33:02.7504005Z             {
2026-07-26T22:33:02.7504305Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7504738Z               "line": 13985
2026-07-26T22:33:02.7505940Z             }
2026-07-26T22:33:02.7506250Z           ]
2026-07-26T22:33:02.7506558Z         }
2026-07-26T22:33:02.7506828Z       }
2026-07-26T22:33:02.7507153Z     },
2026-07-26T22:33:02.7507429Z     {
2026-07-26T22:33:02.7507720Z       "id": "REQ-ADAPTER-LIVE-UPDATE",
2026-07-26T22:33:02.7511145Z       "title": "An adapter update is live and daemon-coordinated (the adapter analog of brain self-update, ADR-0004): for an endpoint with a running RESIDENT adapter binary (today the `[message-idle-translation-binary]`), the CLI keeps fetch+verify and hands the APPLY to the daemon over IPC, which per affected endpoint (1) STOPS the resident binary -> releases the OS file lock (fixes the Windows 'Access denied (os error 5)' overwrite failure), (2) swaps on disk ONLY files whose CRC differs from the staged archive (unchanged files + their still-running binaries untouched), (3) RE-CLONES the new on-disk manifest into the running `BrainLifecycle` (the in-memory manifest is cached at bringup and otherwise goes stale -> binaries+manifest back on the same page), (4) RESTARTS the resident binary from the new files. An endpoint NOT running -> CLI swaps directly (no lock, no cache). Only the resident class is cycled; ephemeral adapter binaries (Psyche loop, `[digest]` extractor, `[session.*]` runners, hooks) self-heal on next spawn and are excluded. The daemon keeps a per-endpoint registry of resident adapter children. (ADR-0025, v0.13.2)",
2026-07-26T22:33:02.7608378Z       "requiredStages": [
2026-07-26T22:33:02.7609211Z         "doc",
2026-07-26T22:33:02.7609543Z         "impl",
2026-07-26T22:33:02.7609848Z         "unit",
2026-07-26T22:33:02.7610149Z         "int"
2026-07-26T22:33:02.7610424Z       ],
2026-07-26T22:33:02.7610706Z       "stages": {
2026-07-26T22:33:02.7610983Z         "doc": {
2026-07-26T22:33:02.7611340Z           "complete": true,
2026-07-26T22:33:02.7611693Z           "evidence": [
2026-07-26T22:33:02.7611992Z             {
2026-07-26T22:33:02.7612502Z               "path": "docs/adr/0025-live-daemon-coordinated-adapter-update.md",
2026-07-26T22:33:02.7613016Z               "line": 3
2026-07-26T22:33:02.7613335Z             },
2026-07-26T22:33:02.7613611Z             {
2026-07-26T22:33:02.7614051Z               "path": "docs/adr/0025-live-daemon-coordinated-adapter-update.md",
2026-07-26T22:33:02.7614555Z               "line": 44
2026-07-26T22:33:02.7614843Z             }
2026-07-26T22:33:02.7615134Z           ]
2026-07-26T22:33:02.7615411Z         },
2026-07-26T22:33:02.7615683Z         "impl": {
2026-07-26T22:33:02.7615998Z           "complete": true,
2026-07-26T22:33:02.7616341Z           "evidence": [
2026-07-26T22:33:02.7616646Z             {
2026-07-26T22:33:02.7616971Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.7617384Z               "line": 1347
2026-07-26T22:33:02.7617699Z             },
2026-07-26T22:33:02.7617976Z             {
2026-07-26T22:33:02.7618305Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.7619540Z               "line": 3007
2026-07-26T22:33:02.7619931Z             },
2026-07-26T22:33:02.7620195Z             {
2026-07-26T22:33:02.7620528Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.7620951Z               "line": 3078
2026-07-26T22:33:02.7621233Z             },
2026-07-26T22:33:02.7621481Z             {
2026-07-26T22:33:02.7621791Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.7622158Z               "line": 3730
2026-07-26T22:33:02.7622449Z             },
2026-07-26T22:33:02.7622705Z             {
2026-07-26T22:33:02.7623009Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.7623352Z               "line": 3997
2026-07-26T22:33:02.7623625Z             },
2026-07-26T22:33:02.7623861Z             {
2026-07-26T22:33:02.7624396Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.7624743Z               "line": 4010
2026-07-26T22:33:02.7625025Z             },
2026-07-26T22:33:02.7625267Z             {
2026-07-26T22:33:02.7625566Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.7625934Z               "line": 4186
2026-07-26T22:33:02.7626205Z             },
2026-07-26T22:33:02.7626438Z             {
2026-07-26T22:33:02.7626738Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.7627067Z               "line": 6003
2026-07-26T22:33:02.7627291Z             },
2026-07-26T22:33:02.7627488Z             {
2026-07-26T22:33:02.7627736Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-07-26T22:33:02.7628015Z               "line": 37
2026-07-26T22:33:02.7628231Z             },
2026-07-26T22:33:02.7628421Z             {
2026-07-26T22:33:02.7629394Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-07-26T22:33:02.7629719Z               "line": 106
2026-07-26T22:33:02.7629942Z             },
2026-07-26T22:33:02.7630146Z             {
2026-07-26T22:33:02.7630399Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.7630692Z               "line": 321
2026-07-26T22:33:02.7630911Z             },
2026-07-26T22:33:02.7631121Z             {
2026-07-26T22:33:02.7631369Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.7631656Z               "line": 347
2026-07-26T22:33:02.7631874Z             },
2026-07-26T22:33:02.7632070Z             {
2026-07-26T22:33:02.7632314Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.7632601Z               "line": 455
2026-07-26T22:33:02.7632828Z             },
2026-07-26T22:33:02.7633023Z             {
2026-07-26T22:33:02.7633266Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.7633554Z               "line": 463
2026-07-26T22:33:02.7633768Z             },
2026-07-26T22:33:02.7633979Z             {
2026-07-26T22:33:02.7634227Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.7634523Z               "line": 482
2026-07-26T22:33:02.7634755Z             },
2026-07-26T22:33:02.7634956Z             {
2026-07-26T22:33:02.7635200Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.7635491Z               "line": 347
2026-07-26T22:33:02.7635717Z             },
2026-07-26T22:33:02.7635911Z             {
2026-07-26T22:33:02.7636145Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.7636436Z               "line": 353
2026-07-26T22:33:02.7636664Z             },
2026-07-26T22:33:02.7636870Z             {
2026-07-26T22:33:02.7637113Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.7637386Z               "line": 388
2026-07-26T22:33:02.7637613Z             },
2026-07-26T22:33:02.7637818Z             {
2026-07-26T22:33:02.7638048Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7638325Z               "line": 10675
2026-07-26T22:33:02.7638551Z             },
2026-07-26T22:33:02.7638748Z             {
2026-07-26T22:33:02.7639152Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7639601Z               "line": 10745
2026-07-26T22:33:02.7639820Z             },
2026-07-26T22:33:02.7640021Z             {
2026-07-26T22:33:02.7640255Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7640526Z               "line": 10774
2026-07-26T22:33:02.7640749Z             }
2026-07-26T22:33:02.7640949Z           ]
2026-07-26T22:33:02.7641142Z         },
2026-07-26T22:33:02.7641339Z         "int": {
2026-07-26T22:33:02.7641562Z           "complete": true,
2026-07-26T22:33:02.7641790Z           "evidence": [
2026-07-26T22:33:02.7642001Z             {
2026-07-26T22:33:02.7642291Z               "path": "crates/spt/tests/live_adapt_translation_swap_e2e.rs",
2026-07-26T22:33:02.7642640Z               "line": 107
2026-07-26T22:33:02.7642870Z             }
2026-07-26T22:33:02.7643199Z           ]
2026-07-26T22:33:02.7643403Z         },
2026-07-26T22:33:02.7643602Z         "unit": {
2026-07-26T22:33:02.7643826Z           "complete": true,
2026-07-26T22:33:02.7644067Z           "evidence": [
2026-07-26T22:33:02.7644290Z             {
2026-07-26T22:33:02.7644544Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.7644834Z               "line": 8876
2026-07-26T22:33:02.7645059Z             },
2026-07-26T22:33:02.7645258Z             {
2026-07-26T22:33:02.7645506Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.7645802Z               "line": 8919
2026-07-26T22:33:02.7646033Z             },
2026-07-26T22:33:02.7646239Z             {
2026-07-26T22:33:02.7646481Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.7646768Z               "line": 8960
2026-07-26T22:33:02.7646997Z             },
2026-07-26T22:33:02.7647210Z             {
2026-07-26T22:33:02.7647458Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-07-26T22:33:02.7647754Z               "line": 325
2026-07-26T22:33:02.7647974Z             },
2026-07-26T22:33:02.7648178Z             {
2026-07-26T22:33:02.7648431Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-07-26T22:33:02.7648702Z               "line": 356
2026-07-26T22:33:02.7648919Z             },
2026-07-26T22:33:02.7649265Z             {
2026-07-26T22:33:02.7649517Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-07-26T22:33:02.7649793Z               "line": 379
2026-07-26T22:33:02.7650013Z             },
2026-07-26T22:33:02.7650214Z             {
2026-07-26T22:33:02.7650466Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-07-26T22:33:02.7650742Z               "line": 431
2026-07-26T22:33:02.7650961Z             },
2026-07-26T22:33:02.7651158Z             {
2026-07-26T22:33:02.7651404Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.7651692Z               "line": 2720
2026-07-26T22:33:02.7651912Z             },
2026-07-26T22:33:02.7652122Z             {
2026-07-26T22:33:02.7652379Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.7652684Z               "line": 2759
2026-07-26T22:33:02.7652904Z             },
2026-07-26T22:33:02.7653110Z             {
2026-07-26T22:33:02.7653338Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.7653639Z               "line": 2805
2026-07-26T22:33:02.7653867Z             },
2026-07-26T22:33:02.7654054Z             {
2026-07-26T22:33:02.7654300Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.7654593Z               "line": 2839
2026-07-26T22:33:02.7654817Z             },
2026-07-26T22:33:02.7655024Z             {
2026-07-26T22:33:02.7655256Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.7655547Z               "line": 2891
2026-07-26T22:33:02.7655762Z             },
2026-07-26T22:33:02.7655973Z             {
2026-07-26T22:33:02.7656215Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7656501Z               "line": 19814
2026-07-26T22:33:02.7656719Z             },
2026-07-26T22:33:02.7657050Z             {
2026-07-26T22:33:02.7657280Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7657557Z               "line": 19983
2026-07-26T22:33:02.7657779Z             },
2026-07-26T22:33:02.7657976Z             {
2026-07-26T22:33:02.7658196Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7658467Z               "line": 20015
2026-07-26T22:33:02.7658690Z             }
2026-07-26T22:33:02.7658882Z           ]
2026-07-26T22:33:02.7659201Z         }
2026-07-26T22:33:02.7659397Z       }
2026-07-26T22:33:02.7659582Z     },
2026-07-26T22:33:02.7659772Z     {
2026-07-26T22:33:02.7660024Z       "id": "REQ-ADAPTER-MULTIPLATFORM-SPT",
2026-07-26T22:33:02.7663346Z       "title": "A `.spt` adapter archive may pack multiple platforms in one signed asset: shared `manifest.toml` + `strings/` at the root, role binaries under per-Rust-target-triple subdirectories (ADR-0016 triple vocabulary, e.g. `x86_64-pc-windows-msvc/`); install/update extracts the shared root plus ONLY `current_platform()`'s triple subdir, flattened into `install_dir` so flat `<install_dir>/<program>` resolution (REQ-INSTALL-11) is unchanged. Name stays `adapter.spt` (plain-tar or gzip, `--asset` optional default); one whole-archive Ed25519 signature over the fat archive (REQ-UPD-9 single-artifact verify). A legacy flat archive (no triple subdirs) extracts as today (free back-compat); a multi-platform archive sets `min_spt_core_version >= 0.13.2` (forward-compat gate, readable before extract); a multi-platform archive missing the recipient's triple -> typed `NoArtifactForPlatform`, never a silent no-op. Large adapters may still split per-platform (single-triple archives via `--asset`, or ADR-0016 update-set machinery). (ADR-0024, v0.13.2)",
2026-07-26T22:33:02.7666485Z       "requiredStages": [
2026-07-26T22:33:02.7666717Z         "doc",
2026-07-26T22:33:02.7666927Z         "impl",
2026-07-26T22:33:02.7667138Z         "unit",
2026-07-26T22:33:02.7667332Z         "int"
2026-07-26T22:33:02.7667536Z       ],
2026-07-26T22:33:02.7667749Z       "stages": {
2026-07-26T22:33:02.7667958Z         "doc": {
2026-07-26T22:33:02.7668178Z           "complete": true,
2026-07-26T22:33:02.7668417Z           "evidence": [
2026-07-26T22:33:02.7668630Z             {
2026-07-26T22:33:02.7669027Z               "path": "docs/adr/0024-multi-platform-adapter-spt-packaging.md",
2026-07-26T22:33:02.7669470Z               "line": 3
2026-07-26T22:33:02.7669676Z             }
2026-07-26T22:33:02.7669866Z           ]
2026-07-26T22:33:02.7670067Z         },
2026-07-26T22:33:02.7670260Z         "impl": {
2026-07-26T22:33:02.7670485Z           "complete": true,
2026-07-26T22:33:02.7670719Z           "evidence": [
2026-07-26T22:33:02.7670933Z             {
2026-07-26T22:33:02.7671185Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:02.7671476Z               "line": 259
2026-07-26T22:33:02.7671710Z             },
2026-07-26T22:33:02.7671906Z             {
2026-07-26T22:33:02.7672139Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7672434Z               "line": 6284
2026-07-26T22:33:02.7672657Z             },
2026-07-26T22:33:02.7672860Z             {
2026-07-26T22:33:02.7673090Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7673361Z               "line": 6374
2026-07-26T22:33:02.7673577Z             }
2026-07-26T22:33:02.7673766Z           ]
2026-07-26T22:33:02.7673967Z         },
2026-07-26T22:33:02.7674163Z         "int": {
2026-07-26T22:33:02.7674387Z           "complete": true,
2026-07-26T22:33:02.7674625Z           "evidence": [
2026-07-26T22:33:02.7674836Z             {
2026-07-26T22:33:02.7675064Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7675334Z               "line": 19649
2026-07-26T22:33:02.7675557Z             },
2026-07-26T22:33:02.7675761Z             {
2026-07-26T22:33:02.7675985Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7676262Z               "line": 19713
2026-07-26T22:33:02.7676482Z             },
2026-07-26T22:33:02.7676802Z             {
2026-07-26T22:33:02.7677025Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7677306Z               "line": 19756
2026-07-26T22:33:02.7677529Z             }
2026-07-26T22:33:02.7677727Z           ]
2026-07-26T22:33:02.7677925Z         },
2026-07-26T22:33:02.7678124Z         "unit": {
2026-07-26T22:33:02.7678342Z           "complete": true,
2026-07-26T22:33:02.7678576Z           "evidence": [
2026-07-26T22:33:02.7678787Z             {
2026-07-26T22:33:02.7679086Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7679359Z               "line": 19584
2026-07-26T22:33:02.7679572Z             },
2026-07-26T22:33:02.7679764Z             {
2026-07-26T22:33:02.7679993Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7680260Z               "line": 19601
2026-07-26T22:33:02.7680478Z             }
2026-07-26T22:33:02.7680829Z           ]
2026-07-26T22:33:02.7681017Z         }
2026-07-26T22:33:02.7681212Z       }
2026-07-26T22:33:02.7681392Z     },
2026-07-26T22:33:02.7681584Z     {
2026-07-26T22:33:02.7681808Z       "id": "REQ-ADAPTER-PROOF-DIR-OVERRIDE",
2026-07-26T22:33:02.7683517Z       "title": "The author-time proof commands (`spt adapter digest-proof`, `spt adapter translate-proof`) gain a `--dir <path>` / `--manifest <file>` override so an author proofs a DEV binary against an on-disk manifest+install dir WITHOUT staging a full extracted GhReleaseManaged install (mirrors digest-proof's `--sample` pointing straight at a file). Fixes perri F-011: a bare-file-added gh_release adapter currently can't be resolved by the *-proof commands ('manifest is not present yet at <dir>'); un-stales the bare-file digest-proof int. (perri F-011, v0.13.x DX)",
2026-07-26T22:33:02.7685077Z       "requiredStages": [
2026-07-26T22:33:02.7685309Z         "doc",
2026-07-26T22:33:02.7685514Z         "impl",
2026-07-26T22:33:02.7685725Z         "unit",
2026-07-26T22:33:02.7685927Z         "int"
2026-07-26T22:33:02.7686117Z       ],
2026-07-26T22:33:02.7686302Z       "stages": {
2026-07-26T22:33:02.7686522Z         "doc": {
2026-07-26T22:33:02.7686732Z           "complete": true,
2026-07-26T22:33:02.7686956Z           "evidence": [
2026-07-26T22:33:02.7687160Z             {
2026-07-26T22:33:02.7687432Z               "path": "docs-site/src/harness-contract/patterns.md",
2026-07-26T22:33:02.7687738Z               "line": 346
2026-07-26T22:33:02.7687953Z             },
2026-07-26T22:33:02.7688152Z             {
2026-07-26T22:33:02.7688372Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:02.7688633Z               "line": 305
2026-07-26T22:33:02.7688854Z             }
2026-07-26T22:33:02.7689193Z           ]
2026-07-26T22:33:02.7689393Z         },
2026-07-26T22:33:02.7689590Z         "impl": {
2026-07-26T22:33:02.7689803Z           "complete": true,
2026-07-26T22:33:02.7690033Z           "evidence": [
2026-07-26T22:33:02.7690248Z             {
2026-07-26T22:33:02.7690477Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7690748Z               "line": 10589
2026-07-26T22:33:02.7690976Z             },
2026-07-26T22:33:02.7691169Z             {
2026-07-26T22:33:02.7691385Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7691657Z               "line": 10601
2026-07-26T22:33:02.7691872Z             },
2026-07-26T22:33:02.7692063Z             {
2026-07-26T22:33:02.7692281Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7692578Z               "line": 11471
2026-07-26T22:33:02.7692793Z             }
2026-07-26T22:33:02.7692983Z           ]
2026-07-26T22:33:02.7693178Z         },
2026-07-26T22:33:02.7693365Z         "int": {
2026-07-26T22:33:02.7693578Z           "complete": true,
2026-07-26T22:33:02.7693805Z           "evidence": [
2026-07-26T22:33:02.7694019Z             {
2026-07-26T22:33:02.7694271Z               "path": "crates/spt/tests/translate_proof.rs",
2026-07-26T22:33:02.7694572Z               "line": 167
2026-07-26T22:33:02.7694801Z             }
2026-07-26T22:33:02.7694993Z           ]
2026-07-26T22:33:02.7695177Z         },
2026-07-26T22:33:02.7695492Z         "unit": {
2026-07-26T22:33:02.7695707Z           "complete": true,
2026-07-26T22:33:02.7695932Z           "evidence": [
2026-07-26T22:33:02.7696160Z             {
2026-07-26T22:33:02.7696379Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7696654Z               "line": 13820
2026-07-26T22:33:02.7696877Z             }
2026-07-26T22:33:02.7697072Z           ]
2026-07-26T22:33:02.7697264Z         }
2026-07-26T22:33:02.7697453Z       }
2026-07-26T22:33:02.7697640Z     },
2026-07-26T22:33:02.7697830Z     {
2026-07-26T22:33:02.7698073Z       "id": "REQ-ADAPTER-TEMPLATE-KEY-VALIDATION",
2026-07-26T22:33:02.7701132Z       "title": "P-1 core half (WORKER-TRUTH triage): `adapter add`/`adapter update` validate every declared role template — command, cwd, and [env] inject values — against the substitution-key catalog (spt-runtime BASE_KEYS + role-specific overrides) and REFUSE registration naming the offending key + role (fail-fast family of the [strings] pointer validation). Field driver: flynn's psyche died on the RETIRED {psyche_dir} key (adapter psyche_resume carried the old psyche_init cwd shape) — a permanent template config fault must die loudly at registration, not at the Nth per-event psyche turn via the 3-strike budget. The catalog stays the single source (runtime.rs FILL_KEYS — 'a catalog key must have a real fill'); validation reads it, never a second list.",
2026-07-26T22:33:02.7703344Z       "requiredStages": [
2026-07-26T22:33:02.7703577Z         "impl",
2026-07-26T22:33:02.7703776Z         "unit",
2026-07-26T22:33:02.7703979Z         "int"
2026-07-26T22:33:02.7704176Z       ],
2026-07-26T22:33:02.7704366Z       "stages": {
2026-07-26T22:33:02.7704579Z         "doc": {
2026-07-26T22:33:02.7704789Z           "complete": false,
2026-07-26T22:33:02.7705028Z           "evidence": []
2026-07-26T22:33:02.7705262Z         },
2026-07-26T22:33:02.7705461Z         "impl": {
2026-07-26T22:33:02.7705681Z           "complete": true,
2026-07-26T22:33:02.7705924Z           "evidence": [
2026-07-26T22:33:02.7706134Z             {
2026-07-26T22:33:02.7706386Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.7706677Z               "line": 1152
2026-07-26T22:33:02.7706906Z             },
2026-07-26T22:33:02.7707110Z             {
2026-07-26T22:33:02.7707360Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:02.7707656Z               "line": 381
2026-07-26T22:33:02.7707871Z             },
2026-07-26T22:33:02.7708071Z             {
2026-07-26T22:33:02.7708328Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.7718680Z               "line": 143
2026-07-26T22:33:02.7719098Z             },
2026-07-26T22:33:02.7719328Z             {
2026-07-26T22:33:02.7719605Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.7719915Z               "line": 154
2026-07-26T22:33:02.7720137Z             },
2026-07-26T22:33:02.7720341Z             {
2026-07-26T22:33:02.7720588Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.7720883Z               "line": 164
2026-07-26T22:33:02.7721107Z             },
2026-07-26T22:33:02.7721303Z             {
2026-07-26T22:33:02.7721547Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.7721823Z               "line": 174
2026-07-26T22:33:02.7722047Z             },
2026-07-26T22:33:02.7722243Z             {
2026-07-26T22:33:02.7722487Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.7722768Z               "line": 192
2026-07-26T22:33:02.7722971Z             },
2026-07-26T22:33:02.7723171Z             {
2026-07-26T22:33:02.7723390Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7723652Z               "line": 10732
2026-07-26T22:33:02.7723877Z             }
2026-07-26T22:33:02.7724067Z           ]
2026-07-26T22:33:02.7724263Z         },
2026-07-26T22:33:02.7724497Z         "int": {
2026-07-26T22:33:02.7724722Z           "complete": true,
2026-07-26T22:33:02.7725146Z           "evidence": [
2026-07-26T22:33:02.7725363Z             {
2026-07-26T22:33:02.7725618Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:02.7725923Z               "line": 905
2026-07-26T22:33:02.7726139Z             }
2026-07-26T22:33:02.7726344Z           ]
2026-07-26T22:33:02.7726538Z         },
2026-07-26T22:33:02.7726725Z         "unit": {
2026-07-26T22:33:02.7726939Z           "complete": true,
2026-07-26T22:33:02.7727187Z           "evidence": [
2026-07-26T22:33:02.7727397Z             {
2026-07-26T22:33:02.7727656Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.7727951Z               "line": 2219
2026-07-26T22:33:02.7728187Z             },
2026-07-26T22:33:02.7728386Z             {
2026-07-26T22:33:02.7728629Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.7729162Z               "line": 2234
2026-07-26T22:33:02.7729391Z             },
2026-07-26T22:33:02.7729588Z             {
2026-07-26T22:33:02.7729855Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.7730165Z               "line": 2246
2026-07-26T22:33:02.7730393Z             },
2026-07-26T22:33:02.7730598Z             {
2026-07-26T22:33:02.7730840Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.7731133Z               "line": 2259
2026-07-26T22:33:02.7731357Z             },
2026-07-26T22:33:02.7731553Z             {
2026-07-26T22:33:02.7731788Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.7732068Z               "line": 2275
2026-07-26T22:33:02.7732292Z             },
2026-07-26T22:33:02.7732497Z             {
2026-07-26T22:33:02.7732732Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.7733013Z               "line": 2294
2026-07-26T22:33:02.7733246Z             }
2026-07-26T22:33:02.7733437Z           ]
2026-07-26T22:33:02.7733626Z         }
2026-07-26T22:33:02.7733818Z       }
2026-07-26T22:33:02.7734013Z     },
2026-07-26T22:33:02.7734217Z     {
2026-07-26T22:33:02.7734447Z       "id": "REQ-ADAPTER-TRANSLATE-PROOF",
2026-07-26T22:33:02.7739336Z       "title": "`spt adapter translate-proof <adapter> --event <envelope> [--session <id>]` — the author-time EMIT-half proof tool for `[message-idle-translation-binary]` (ADR-0022), symmetric to `spt adapter digest-proof` (REQ-TERM-5). It spawns and feeds the adapter's declared translation binary EXACTLY as the daemon does at idle-delivery — running the REAL `spt_daemon::translation` driver VERBATIM (no protocol reimplementation): `TranslationChild::spawn` the binary, send the `{type:\"init\",endpoint_id,node}` line then the `{type:\"event\",envelope}` line, and read back the emitted `{key}`/`{text}`/`{delay_ms}`/`{commit}` keystroke-command stream — then prints it author-readable (each Key with its `key_to_bytes` rendering, Text quoted, Delay in ms, Commit marker) with counts. It fills the SAME `{id}`→option and `{session_id}`→(--session, else a placeholder) keys into the `--event` envelope the daemon fills at runtime, so an envelope that proofs here feeds faithfully live. EMIT-half ONLY: it proves the binary's spawn+feed+emit contract; it does NOT exercise the daemon's atomic PTY apply / controller-buffering (that stays covered by the W2 inject_control_wedge int gate) — `--help` says so. Exit codes mirror digest-proof: 0 ok, 1 on spawn-fail / zero commands / no-commit-or-output / unparseable, 2 when the adapter declares no `[message-idle-translation-binary]` section. The `TranslationChild` Drop does the bounded no-zombie reap. (v0.13.x)",
2026-07-26T22:33:02.7743367Z       "requiredStages": [
2026-07-26T22:33:02.7743607Z         "doc",
2026-07-26T22:33:02.7743815Z         "impl",
2026-07-26T22:33:02.7744021Z         "unit",
2026-07-26T22:33:02.7744229Z         "int"
2026-07-26T22:33:02.7744434Z       ],
2026-07-26T22:33:02.7744640Z       "stages": {
2026-07-26T22:33:02.7744849Z         "doc": {
2026-07-26T22:33:02.7745068Z           "complete": true,
2026-07-26T22:33:02.7745483Z           "evidence": [
2026-07-26T22:33:02.7745693Z             {
2026-07-26T22:33:02.7746021Z               "path": "docs/adr/0022-spt-hosted-idle-delivery-translation-binary.md",
2026-07-26T22:33:02.7746393Z               "line": 73
2026-07-26T22:33:02.7746611Z             }
2026-07-26T22:33:02.7746801Z           ]
2026-07-26T22:33:02.7746982Z         },
2026-07-26T22:33:02.7747178Z         "impl": {
2026-07-26T22:33:02.7747391Z           "complete": true,
2026-07-26T22:33:02.7747630Z           "evidence": [
2026-07-26T22:33:02.7747845Z             {
2026-07-26T22:33:02.7748089Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7748374Z               "line": 10600
2026-07-26T22:33:02.7748594Z             },
2026-07-26T22:33:02.7748790Z             {
2026-07-26T22:33:02.7749143Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7749581Z               "line": 11657
2026-07-26T22:33:02.7749821Z             }
2026-07-26T22:33:02.7750031Z           ]
2026-07-26T22:33:02.7750230Z         },
2026-07-26T22:33:02.7750426Z         "int": {
2026-07-26T22:33:02.7750641Z           "complete": true,
2026-07-26T22:33:02.7750869Z           "evidence": [
2026-07-26T22:33:02.7751088Z             {
2026-07-26T22:33:02.7751338Z               "path": "crates/spt/tests/translate_proof.rs",
2026-07-26T22:33:02.7751634Z               "line": 54
2026-07-26T22:33:02.7751850Z             }
2026-07-26T22:33:02.7752054Z           ]
2026-07-26T22:33:02.7752244Z         },
2026-07-26T22:33:02.7752444Z         "unit": {
2026-07-26T22:33:02.7752664Z           "complete": true,
2026-07-26T22:33:02.7752908Z           "evidence": [
2026-07-26T22:33:02.7753121Z             {
2026-07-26T22:33:02.7753355Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7753622Z               "line": 16170
2026-07-26T22:33:02.7753842Z             },
2026-07-26T22:33:02.7754051Z             {
2026-07-26T22:33:02.7754284Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7754553Z               "line": 16242
2026-07-26T22:33:02.7754775Z             }
2026-07-26T22:33:02.7754966Z           ]
2026-07-26T22:33:02.7755157Z         }
2026-07-26T22:33:02.7755352Z       }
2026-07-26T22:33:02.7755538Z     },
2026-07-26T22:33:02.7755729Z     {
2026-07-26T22:33:02.7755971Z       "id": "REQ-ADAPTER-UNRESOLVED-HINT-FORM",
2026-07-26T22:33:02.7758581Z       "title": "F-034 leg a (perri/hertz field finding 2026-07-09): the ADAPTER_UNRESOLVED refusal hint must print a WORKING command form. It currently says 'pass --adapter <name[:profile]>', but --adapter is a `spt api` GROUP flag, NOT a `listen` flag — following the hint literally (`spt api listen <id> --adapter <name>`) produces clap `error: unexpected argument '--adapter'` (exit 2). Fix: the hint prints the group-level form, e.g. `spt api --adapter <name> <cmd> …` (a hint the operator can copy-paste and have work). Gate: the ADAPTER_UNRESOLVED message text carries a clap-VALID invocation (group-level --adapter placement) — a unit asserting the hint string parses under the api clap grammar, or at minimum places --adapter before the subcommand. Pure UX/hint-correctness fix, no behavior change.",
2026-07-26T22:33:02.7760930Z       "requiredStages": [
2026-07-26T22:33:02.7761153Z         "impl",
2026-07-26T22:33:02.7761358Z         "unit"
2026-07-26T22:33:02.7761550Z       ],
2026-07-26T22:33:02.7761739Z       "stages": {
2026-07-26T22:33:02.7761941Z         "doc": {
2026-07-26T22:33:02.7762161Z           "complete": false,
2026-07-26T22:33:02.7762411Z           "evidence": []
2026-07-26T22:33:02.7762624Z         },
2026-07-26T22:33:02.7762814Z         "impl": {
2026-07-26T22:33:02.7763028Z           "complete": true,
2026-07-26T22:33:02.7763258Z           "evidence": [
2026-07-26T22:33:02.7763468Z             {
2026-07-26T22:33:02.7763710Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-07-26T22:33:02.7764015Z               "line": 79
2026-07-26T22:33:02.7764225Z             }
2026-07-26T22:33:02.7764436Z           ]
2026-07-26T22:33:02.7764784Z         },
2026-07-26T22:33:02.7764979Z         "int": {
2026-07-26T22:33:02.7765197Z           "complete": false,
2026-07-26T22:33:02.7765441Z           "evidence": []
2026-07-26T22:33:02.7765649Z         },
2026-07-26T22:33:02.7765836Z         "unit": {
2026-07-26T22:33:02.7766042Z           "complete": true,
2026-07-26T22:33:02.7766269Z           "evidence": [
2026-07-26T22:33:02.7766494Z             {
2026-07-26T22:33:02.7766747Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-07-26T22:33:02.7767038Z               "line": 484
2026-07-26T22:33:02.7767262Z             },
2026-07-26T22:33:02.7767466Z             {
2026-07-26T22:33:02.7767694Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7767973Z               "line": 13362
2026-07-26T22:33:02.7768192Z             }
2026-07-26T22:33:02.7768393Z           ]
2026-07-26T22:33:02.7768703Z         }
2026-07-26T22:33:02.7768900Z       }
2026-07-26T22:33:02.7769243Z     },
2026-07-26T22:33:02.7769446Z     {
2026-07-26T22:33:02.7769680Z       "id": "REQ-ADAPTER-UPDATE-INPLACE",
2026-07-26T22:33:02.7771413Z       "title": "Bug #18: spt adapter update fails at re-register with os error 2 because it derives the install dir from the update repo NAME (_github/<safe>) instead of updating in place at the adapter record source_dir; when the adapter repo is intentionally renamed across releases (spt-claude-code to claude-spt, supported), the derived dir is fresh/empty and re-register reads a missing manifest. Fix: adapter update installs and re-registers in place at the registered source_dir and tolerates a changed update repo/URL across a rename. See docs/NEXT-MILESTONE-BUG-TRIAGE.md #18.",
2026-07-26T22:33:02.7773033Z       "requiredStages": [
2026-07-26T22:33:02.7773264Z         "impl",
2026-07-26T22:33:02.7773470Z         "unit"
2026-07-26T22:33:02.7773669Z       ],
2026-07-26T22:33:02.7773860Z       "stages": {
2026-07-26T22:33:02.7774075Z         "doc": {
2026-07-26T22:33:02.7774304Z           "complete": false,
2026-07-26T22:33:02.7774551Z           "evidence": []
2026-07-26T22:33:02.7774771Z         },
2026-07-26T22:33:02.7774972Z         "impl": {
2026-07-26T22:33:02.7775190Z           "complete": true,
2026-07-26T22:33:02.7775428Z           "evidence": [
2026-07-26T22:33:02.7775654Z             {
2026-07-26T22:33:02.7775880Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7776157Z               "line": 10195
2026-07-26T22:33:02.7776378Z             },
2026-07-26T22:33:02.7776568Z             {
2026-07-26T22:33:02.7776791Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7777054Z               "line": 11169
2026-07-26T22:33:02.7777274Z             }
2026-07-26T22:33:02.7777469Z           ]
2026-07-26T22:33:02.7777668Z         },
2026-07-26T22:33:02.7777866Z         "int": {
2026-07-26T22:33:02.7778087Z           "complete": false,
2026-07-26T22:33:02.7778338Z           "evidence": []
2026-07-26T22:33:02.7778553Z         },
2026-07-26T22:33:02.7778752Z         "unit": {
2026-07-26T22:33:02.7779067Z           "complete": true,
2026-07-26T22:33:02.7779654Z           "evidence": [
2026-07-26T22:33:02.7779940Z             {
2026-07-26T22:33:02.7780231Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7780574Z               "line": 20059
2026-07-26T22:33:02.7780846Z             }
2026-07-26T22:33:02.7781093Z           ]
2026-07-26T22:33:02.7781348Z         }
2026-07-26T22:33:02.7781577Z       }
2026-07-26T22:33:02.7781802Z     },
2026-07-26T22:33:02.7782031Z     {
2026-07-26T22:33:02.7782311Z       "id": "REQ-ADAPTER-UPDATE-MESSAGE",
2026-07-26T22:33:02.7784539Z       "title": "An adapter manifest may declare `[update].message` — a plain (multi-line) human notice surfaced to stdout, markdown-rendered (the v0.13.0 helpfmt prose path), ONLY when `spt adapter update` actually APPLIES an update (version changed), not on a no-op. Read from the newly-installed manifest; avenue-agnostic (gh_release/delegated/file_pull). No `{key}` substitution. Use: an adapter telling the operator a post-update action, e.g. spt-claude-code's \"run `/reload-plugins` in any ongoing sessions\". (v0.13.2)",
2026-07-26T22:33:02.7786684Z       "requiredStages": [
2026-07-26T22:33:02.7786957Z         "doc",
2026-07-26T22:33:02.7787218Z         "impl",
2026-07-26T22:33:02.7787428Z         "unit"
2026-07-26T22:33:02.7787628Z       ],
2026-07-26T22:33:02.7787816Z       "stages": {
2026-07-26T22:33:02.7788038Z         "doc": {
2026-07-26T22:33:02.7788252Z           "complete": true,
2026-07-26T22:33:02.7788492Z           "evidence": [
2026-07-26T22:33:02.7788705Z             {
2026-07-26T22:33:02.7788917Z               "path": "CONTEXT.md",
2026-07-26T22:33:02.7789251Z               "line": 103
2026-07-26T22:33:02.7789475Z             },
2026-07-26T22:33:02.7789680Z             {
2026-07-26T22:33:02.7789894Z               "path": "CONTEXT.md",
2026-07-26T22:33:02.7790266Z               "line": 588
2026-07-26T22:33:02.7790486Z             },
2026-07-26T22:33:02.7790688Z             {
2026-07-26T22:33:02.7790959Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-07-26T22:33:02.7791278Z               "line": 451
2026-07-26T22:33:02.7791496Z             },
2026-07-26T22:33:02.7791690Z             {
2026-07-26T22:33:02.7791908Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:02.7792170Z               "line": 490
2026-07-26T22:33:02.7792386Z             }
2026-07-26T22:33:02.7792587Z           ]
2026-07-26T22:33:02.7792776Z         },
2026-07-26T22:33:02.7792963Z         "impl": {
2026-07-26T22:33:02.7793172Z           "complete": true,
2026-07-26T22:33:02.7793405Z           "evidence": [
2026-07-26T22:33:02.7793607Z             {
2026-07-26T22:33:02.7793850Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.7794143Z               "line": 575
2026-07-26T22:33:02.7794365Z             },
2026-07-26T22:33:02.7794557Z             {
2026-07-26T22:33:02.7794784Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7795061Z               "line": 10818
2026-07-26T22:33:02.7795286Z             }
2026-07-26T22:33:02.7795486Z           ]
2026-07-26T22:33:02.7795700Z         },
2026-07-26T22:33:02.7795901Z         "int": {
2026-07-26T22:33:02.7796126Z           "complete": false,
2026-07-26T22:33:02.7796373Z           "evidence": []
2026-07-26T22:33:02.7796592Z         },
2026-07-26T22:33:02.7796779Z         "unit": {
2026-07-26T22:33:02.7796996Z           "complete": true,
2026-07-26T22:33:02.7797225Z           "evidence": [
2026-07-26T22:33:02.7797436Z             {
2026-07-26T22:33:02.7797669Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7797940Z               "line": 13762
2026-07-26T22:33:02.7798155Z             },
2026-07-26T22:33:02.7798347Z             {
2026-07-26T22:33:02.7798570Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7798837Z               "line": 13777
2026-07-26T22:33:02.7799132Z             }
2026-07-26T22:33:02.7799317Z           ]
2026-07-26T22:33:02.7799501Z         }
2026-07-26T22:33:02.7799688Z       }
2026-07-26T22:33:02.7799877Z     },
2026-07-26T22:33:02.7800060Z     {
2026-07-26T22:33:02.7800289Z       "id": "REQ-ADAPTER-UPDATE-POST",
2026-07-26T22:33:02.7803494Z       "title": "Composite adapter update — an avenue-agnostic `[update.post]` sub-table `{ command, self_verifies }` run AFTER the primary avenue (gh_release/file_pull/delegated) resolves, in the same `spt adapter update` (ADR-0029). Runs UNCONDITIONALLY (even on an adapter version no-op — the post-step's own idempotent check decides). PUBLISHED stdin JSON seam: one line `{adapter_applied, adapter_name, profile_name, version, previous_version, adapter_dir}` (additive keys; post-step ignores unknown). stdout decides the notice: custom text SUPERSEDES [update].message; a reserved sentinel fires the static [update].message; empty = no notice. exit code orthogonal (0 ok / nonzero failed). Precedence: dynamic-stdout > sentinel/manifest-message > nothing. NO [update.post] declared ⇒ today's adapter_applied→[update].message unchanged; post-step FAILS ⇒ loud warning + fall back to adapter_applied→message. FAILURE-ISOLATED: a committed gh_release pull is never rolled back if the post-step fails (independent channels). (v0.16.0)",
2026-07-26T22:33:02.7806575Z       "requiredStages": [
2026-07-26T22:33:02.7806808Z         "doc",
2026-07-26T22:33:02.7807005Z         "impl",
2026-07-26T22:33:02.7807200Z         "unit",
2026-07-26T22:33:02.7807386Z         "int"
2026-07-26T22:33:02.7807570Z       ],
2026-07-26T22:33:02.7807757Z       "stages": {
2026-07-26T22:33:02.7807967Z         "doc": {
2026-07-26T22:33:02.7808176Z           "complete": true,
2026-07-26T22:33:02.7808406Z           "evidence": [
2026-07-26T22:33:02.7808621Z             {
2026-07-26T22:33:02.7808883Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-07-26T22:33:02.7809265Z               "line": 512
2026-07-26T22:33:02.7809612Z             },
2026-07-26T22:33:02.7809805Z             {
2026-07-26T22:33:02.7810023Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:02.7810310Z               "line": 493
2026-07-26T22:33:02.7810514Z             },
2026-07-26T22:33:02.7810700Z             {
2026-07-26T22:33:02.7810995Z               "path": "docs/adr/0029-adapter-update-arc-resolve-not-execute.md",
2026-07-26T22:33:02.7811334Z               "line": 3
2026-07-26T22:33:02.7811530Z             }
2026-07-26T22:33:02.7811725Z           ]
2026-07-26T22:33:02.7811920Z         },
2026-07-26T22:33:02.7812108Z         "impl": {
2026-07-26T22:33:02.7812326Z           "complete": true,
2026-07-26T22:33:02.7812559Z           "evidence": [
2026-07-26T22:33:02.7812769Z             {
2026-07-26T22:33:02.7813019Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.7813309Z               "line": 581
2026-07-26T22:33:02.7813529Z             },
2026-07-26T22:33:02.7813721Z             {
2026-07-26T22:33:02.7813968Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.7814259Z               "line": 608
2026-07-26T22:33:02.7814464Z             },
2026-07-26T22:33:02.7814665Z             {
2026-07-26T22:33:02.7814898Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.7815192Z               "line": 1122
2026-07-26T22:33:02.7815415Z             },
2026-07-26T22:33:02.7815614Z             {
2026-07-26T22:33:02.7815833Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7816105Z               "line": 10833
2026-07-26T22:33:02.7816325Z             },
2026-07-26T22:33:02.7816510Z             {
2026-07-26T22:33:02.7816720Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7816983Z               "line": 10841
2026-07-26T22:33:02.7817198Z             },
2026-07-26T22:33:02.7817383Z             {
2026-07-26T22:33:02.7817608Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7817876Z               "line": 10852
2026-07-26T22:33:02.7818107Z             },
2026-07-26T22:33:02.7818308Z             {
2026-07-26T22:33:02.7818527Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7818799Z               "line": 10875
2026-07-26T22:33:02.7819138Z             },
2026-07-26T22:33:02.7819323Z             {
2026-07-26T22:33:02.7819548Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7819805Z               "line": 11284
2026-07-26T22:33:02.7820024Z             }
2026-07-26T22:33:02.7820210Z           ]
2026-07-26T22:33:02.7820400Z         },
2026-07-26T22:33:02.7820583Z         "int": {
2026-07-26T22:33:02.7820799Z           "complete": true,
2026-07-26T22:33:02.7821026Z           "evidence": [
2026-07-26T22:33:02.7821227Z             {
2026-07-26T22:33:02.7821470Z               "path": "crates/spt/tests/adapter_post_step.rs",
2026-07-26T22:33:02.7821771Z               "line": 41
2026-07-26T22:33:02.7821990Z             }
2026-07-26T22:33:02.7822172Z           ]
2026-07-26T22:33:02.7822358Z         },
2026-07-26T22:33:02.7822557Z         "unit": {
2026-07-26T22:33:02.7822776Z           "complete": true,
2026-07-26T22:33:02.7823247Z           "evidence": [
2026-07-26T22:33:02.7835194Z             {
2026-07-26T22:33:02.7835523Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.7835833Z               "line": 1451
2026-07-26T22:33:02.7836067Z             },
2026-07-26T22:33:02.7836274Z             {
2026-07-26T22:33:02.7836503Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7836778Z               "line": 13789
2026-07-26T22:33:02.7836987Z             }
2026-07-26T22:33:02.7837183Z           ]
2026-07-26T22:33:02.7837369Z         }
2026-07-26T22:33:02.7837564Z       }
2026-07-26T22:33:02.7837742Z     },
2026-07-26T22:33:02.7837931Z     {
2026-07-26T22:33:02.7838156Z       "id": "REQ-ADAPTER-VERSION-CMD",
2026-07-26T22:33:02.7840086Z       "title": "`spt adapter version <name>` prints a registered adapter's declared version — the EXISTING mandatory `[adapter].version` manifest field (manifest.rs already requires it; NOT a `[strings].version`, NOT `get-string`, no second version source). A new `AdapterCmd::Version{option}` resolves the option's merged view via `registry::resolve_option` like the sibling adapter subcommands and prints `manifest.adapter.version`; an unresolvable option errors (exit 1) the same way. (v0.13.2 W6)",
2026-07-26T22:33:02.7841709Z       "requiredStages": [
2026-07-26T22:33:02.7841943Z         "doc",
2026-07-26T22:33:02.7842146Z         "impl",
2026-07-26T22:33:02.7842352Z         "unit"
2026-07-26T22:33:02.7842548Z       ],
2026-07-26T22:33:02.7842742Z       "stages": {
2026-07-26T22:33:02.7842938Z         "doc": {
2026-07-26T22:33:02.7843158Z           "complete": true,
2026-07-26T22:33:02.7843391Z           "evidence": [
2026-07-26T22:33:02.7843605Z             {
2026-07-26T22:33:02.7843841Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:02.7844103Z               "line": 35
2026-07-26T22:33:02.7844320Z             }
2026-07-26T22:33:02.7844524Z           ]
2026-07-26T22:33:02.7844714Z         },
2026-07-26T22:33:02.7844905Z         "impl": {
2026-07-26T22:33:02.7845125Z           "complete": true,
2026-07-26T22:33:02.7845353Z           "evidence": [
2026-07-26T22:33:02.7845562Z             {
2026-07-26T22:33:02.7845796Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7846055Z               "line": 10565
2026-07-26T22:33:02.7846268Z             },
2026-07-26T22:33:02.7846459Z             {
2026-07-26T22:33:02.7846694Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7846959Z               "line": 11441
2026-07-26T22:33:02.7847166Z             }
2026-07-26T22:33:02.7847362Z           ]
2026-07-26T22:33:02.7847561Z         },
2026-07-26T22:33:02.7847762Z         "int": {
2026-07-26T22:33:02.7847982Z           "complete": false,
2026-07-26T22:33:02.7848215Z           "evidence": []
2026-07-26T22:33:02.7848439Z         },
2026-07-26T22:33:02.7848640Z         "unit": {
2026-07-26T22:33:02.7848859Z           "complete": true,
2026-07-26T22:33:02.7849169Z           "evidence": [
2026-07-26T22:33:02.7849378Z             {
2026-07-26T22:33:02.7849599Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7849874Z               "line": 13880
2026-07-26T22:33:02.7850097Z             },
2026-07-26T22:33:02.7850294Z             {
2026-07-26T22:33:02.7850518Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.7850780Z               "line": 13891
2026-07-26T22:33:02.7850998Z             }
2026-07-26T22:33:02.7851190Z           ]
2026-07-26T22:33:02.7851375Z         }
2026-07-26T22:33:02.7851566Z       }
2026-07-26T22:33:02.7851787Z     },
2026-07-26T22:33:02.7851966Z     {
2026-07-26T22:33:02.7852184Z       "id": "REQ-API-1",
2026-07-26T22:33:02.7852508Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-07-26T22:33:02.7852850Z       "requiredStages": [
2026-07-26T22:33:02.7853075Z         "impl",
2026-07-26T22:33:02.7853279Z         "unit",
2026-07-26T22:33:02.7853494Z         "int"
2026-07-26T22:33:02.7853685Z       ],
2026-07-26T22:33:02.7853875Z       "stages": {
2026-07-26T22:33:02.7854076Z         "doc": {
2026-07-26T22:33:02.7854405Z           "complete": false,
2026-07-26T22:33:02.7854649Z           "evidence": []
2026-07-26T22:33:02.7854861Z         },
2026-07-26T22:33:02.7855061Z         "impl": {
2026-07-26T22:33:02.7855283Z           "complete": true,
2026-07-26T22:33:02.7855511Z           "evidence": [
2026-07-26T22:33:02.7855722Z             {
2026-07-26T22:33:02.7855951Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:02.7856222Z               "line": 15
2026-07-26T22:33:02.7856437Z             }
2026-07-26T22:33:02.7856638Z           ]
2026-07-26T22:33:02.7856833Z         },
2026-07-26T22:33:02.7857019Z         "int": {
2026-07-26T22:33:02.7857239Z           "complete": true,
2026-07-26T22:33:02.7857480Z           "evidence": [
2026-07-26T22:33:02.7857697Z             {
2026-07-26T22:33:02.7857951Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-07-26T22:33:02.7858379Z               "line": 13
2026-07-26T22:33:02.7858603Z             }
2026-07-26T22:33:02.7858800Z           ]
2026-07-26T22:33:02.7859071Z         },
2026-07-26T22:33:02.7859256Z         "unit": {
2026-07-26T22:33:02.7859477Z           "complete": true,
2026-07-26T22:33:02.7859719Z           "evidence": [
2026-07-26T22:33:02.7859919Z             {
2026-07-26T22:33:02.7860140Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:02.7860419Z               "line": 847
2026-07-26T22:33:02.7860624Z             },
2026-07-26T22:33:02.7860825Z             {
2026-07-26T22:33:02.7861049Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:02.7861315Z               "line": 954
2026-07-26T22:33:02.7861535Z             }
2026-07-26T22:33:02.7861736Z           ]
2026-07-26T22:33:02.7861921Z         }
2026-07-26T22:33:02.7862103Z       }
2026-07-26T22:33:02.7862274Z     },
2026-07-26T22:33:02.7862469Z     {
2026-07-26T22:33:02.7862664Z       "id": "REQ-API-2",
2026-07-26T22:33:02.7863015Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-07-26T22:33:02.7863396Z       "requiredStages": [
2026-07-26T22:33:02.7863626Z         "impl",
2026-07-26T22:33:02.7863830Z         "unit",
2026-07-26T22:33:02.7864026Z         "int"
2026-07-26T22:33:02.7864211Z       ],
2026-07-26T22:33:02.7864407Z       "stages": {
2026-07-26T22:33:02.7864608Z         "doc": {
2026-07-26T22:33:02.7864826Z           "complete": false,
2026-07-26T22:33:02.7865098Z           "evidence": []
2026-07-26T22:33:02.7865313Z         },
2026-07-26T22:33:02.7865507Z         "impl": {
2026-07-26T22:33:02.7865729Z           "complete": true,
2026-07-26T22:33:02.7865973Z           "evidence": [
2026-07-26T22:33:02.7866206Z             {
2026-07-26T22:33:02.7866454Z               "path": "crates/spt-store/src/history.rs",
2026-07-26T22:33:02.7866744Z               "line": 17
2026-07-26T22:33:02.7866969Z             },
2026-07-26T22:33:02.7867170Z             {
2026-07-26T22:33:02.7867413Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:02.7867698Z               "line": 20
2026-07-26T22:33:02.7867936Z             },
2026-07-26T22:33:02.7868155Z             {
2026-07-26T22:33:02.7868396Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:02.7868667Z               "line": 194
2026-07-26T22:33:02.7868892Z             },
2026-07-26T22:33:02.7869168Z             {
2026-07-26T22:33:02.7869427Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7869708Z               "line": 24
2026-07-26T22:33:02.7869926Z             },
2026-07-26T22:33:02.7870122Z             {
2026-07-26T22:33:02.7870362Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7870648Z               "line": 41
2026-07-26T22:33:02.7870855Z             },
2026-07-26T22:33:02.7871056Z             {
2026-07-26T22:33:02.7871294Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7871580Z               "line": 317
2026-07-26T22:33:02.7871803Z             },
2026-07-26T22:33:02.7872005Z             {
2026-07-26T22:33:02.7872243Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7872644Z               "line": 359
2026-07-26T22:33:02.7872858Z             },
2026-07-26T22:33:02.7873058Z             {
2026-07-26T22:33:02.7873290Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7873570Z               "line": 438
2026-07-26T22:33:02.7873788Z             },
2026-07-26T22:33:02.7873985Z             {
2026-07-26T22:33:02.7874224Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7874510Z               "line": 501
2026-07-26T22:33:02.7874728Z             },
2026-07-26T22:33:02.7874924Z             {
2026-07-26T22:33:02.7875164Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7875445Z               "line": 554
2026-07-26T22:33:02.7875658Z             },
2026-07-26T22:33:02.7875859Z             {
2026-07-26T22:33:02.7876204Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:02.7876476Z               "line": 17
2026-07-26T22:33:02.7876694Z             },
2026-07-26T22:33:02.7876890Z             {
2026-07-26T22:33:02.7877124Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:02.7877396Z               "line": 44
2026-07-26T22:33:02.7877614Z             },
2026-07-26T22:33:02.7877820Z             {
2026-07-26T22:33:02.7878054Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:02.7878331Z               "line": 109
2026-07-26T22:33:02.7878543Z             },
2026-07-26T22:33:02.7878748Z             {
2026-07-26T22:33:02.7879052Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:02.7879324Z               "line": 123
2026-07-26T22:33:02.7879547Z             }
2026-07-26T22:33:02.7879753Z           ]
2026-07-26T22:33:02.7879948Z         },
2026-07-26T22:33:02.7880148Z         "int": {
2026-07-26T22:33:02.7880372Z           "complete": true,
2026-07-26T22:33:02.7880611Z           "evidence": [
2026-07-26T22:33:02.7880825Z             {
2026-07-26T22:33:02.7881068Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-07-26T22:33:02.7881359Z               "line": 14
2026-07-26T22:33:02.7881573Z             },
2026-07-26T22:33:02.7881768Z             {
2026-07-26T22:33:02.7882007Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-07-26T22:33:02.7882288Z               "line": 187
2026-07-26T22:33:02.7882522Z             }
2026-07-26T22:33:02.7882712Z           ]
2026-07-26T22:33:02.7882908Z         },
2026-07-26T22:33:02.7883099Z         "unit": {
2026-07-26T22:33:02.7883323Z           "complete": true,
2026-07-26T22:33:02.7883557Z           "evidence": [
2026-07-26T22:33:02.7883660Z             {
2026-07-26T22:33:02.7883808Z               "path": "crates/spt-store/src/history.rs",
2026-07-26T22:33:02.7883925Z               "line": 82
2026-07-26T22:33:02.7884029Z             },
2026-07-26T22:33:02.7884140Z             {
2026-07-26T22:33:02.7884278Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:02.7884402Z               "line": 465
2026-07-26T22:33:02.7884502Z             },
2026-07-26T22:33:02.7884606Z             {
2026-07-26T22:33:02.7884751Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7884870Z               "line": 1213
2026-07-26T22:33:02.7884964Z             },
2026-07-26T22:33:02.7885065Z             {
2026-07-26T22:33:02.7885208Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7885322Z               "line": 1224
2026-07-26T22:33:02.7885418Z             },
2026-07-26T22:33:02.7885527Z             {
2026-07-26T22:33:02.7885666Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7885780Z               "line": 1514
2026-07-26T22:33:02.7885880Z             },
2026-07-26T22:33:02.7885991Z             {
2026-07-26T22:33:02.7886127Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7886247Z               "line": 1560
2026-07-26T22:33:02.7886358Z             },
2026-07-26T22:33:02.7886461Z             {
2026-07-26T22:33:02.7886708Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:02.7886811Z               "line": 190
2026-07-26T22:33:02.7886906Z             },
2026-07-26T22:33:02.7887007Z             {
2026-07-26T22:33:02.7887145Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:02.7887245Z               "line": 288
2026-07-26T22:33:02.7887350Z             }
2026-07-26T22:33:02.7887450Z           ]
2026-07-26T22:33:02.7887554Z         }
2026-07-26T22:33:02.7887656Z       }
2026-07-26T22:33:02.7887770Z     },
2026-07-26T22:33:02.7887869Z     {
2026-07-26T22:33:02.7887984Z       "id": "REQ-API-3",
2026-07-26T22:33:02.7888156Z       "title": "commune/signoff are file-drops, not commands",
2026-07-26T22:33:02.7888276Z       "requiredStages": [
2026-07-26T22:33:02.7888380Z         "impl",
2026-07-26T22:33:02.7888489Z         "unit",
2026-07-26T22:33:02.7888694Z         "int"
2026-07-26T22:33:02.7888800Z       ],
2026-07-26T22:33:02.7888901Z       "stages": {
2026-07-26T22:33:02.7889075Z         "doc": {
2026-07-26T22:33:02.7889199Z           "complete": false,
2026-07-26T22:33:02.7889322Z           "evidence": []
2026-07-26T22:33:02.7889420Z         },
2026-07-26T22:33:02.7889526Z         "impl": {
2026-07-26T22:33:02.7889631Z           "complete": true,
2026-07-26T22:33:02.7889749Z           "evidence": [
2026-07-26T22:33:02.7889845Z             {
2026-07-26T22:33:02.7889989Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:02.7890092Z               "line": 27
2026-07-26T22:33:02.7890198Z             },
2026-07-26T22:33:02.7890293Z             {
2026-07-26T22:33:02.7890441Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7890542Z               "line": 684
2026-07-26T22:33:02.7890636Z             }
2026-07-26T22:33:02.7890741Z           ]
2026-07-26T22:33:02.7890838Z         },
2026-07-26T22:33:02.7890942Z         "int": {
2026-07-26T22:33:02.7891066Z           "complete": true,
2026-07-26T22:33:02.7891171Z           "evidence": [
2026-07-26T22:33:02.7891280Z             {
2026-07-26T22:33:02.7891429Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-07-26T22:33:02.7891548Z               "line": 261
2026-07-26T22:33:02.7891653Z             }
2026-07-26T22:33:02.7891754Z           ]
2026-07-26T22:33:02.7891853Z         },
2026-07-26T22:33:02.7891956Z         "unit": {
2026-07-26T22:33:02.7892075Z           "complete": true,
2026-07-26T22:33:02.7892176Z           "evidence": [
2026-07-26T22:33:02.7892280Z             {
2026-07-26T22:33:02.7892429Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:02.7892549Z               "line": 467
2026-07-26T22:33:02.7892647Z             },
2026-07-26T22:33:02.7892749Z             {
2026-07-26T22:33:02.7892892Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7893015Z               "line": 1589
2026-07-26T22:33:02.7893125Z             }
2026-07-26T22:33:02.7893230Z           ]
2026-07-26T22:33:02.7893330Z         }
2026-07-26T22:33:02.7893431Z       }
2026-07-26T22:33:02.7893530Z     },
2026-07-26T22:33:02.7893635Z     {
2026-07-26T22:33:02.7893736Z       "id": "REQ-API-4",
2026-07-26T22:33:02.7895306Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-07-26T22:33:02.7895430Z       "requiredStages": [
2026-07-26T22:33:02.7895529Z         "doc",
2026-07-26T22:33:02.7895635Z         "impl",
2026-07-26T22:33:02.7895739Z         "unit"
2026-07-26T22:33:02.7895853Z       ],
2026-07-26T22:33:02.7895969Z       "stages": {
2026-07-26T22:33:02.7896073Z         "doc": {
2026-07-26T22:33:02.7896187Z           "complete": true,
2026-07-26T22:33:02.7896421Z           "evidence": [
2026-07-26T22:33:02.7896521Z             {
2026-07-26T22:33:02.7896646Z               "path": "CONTEXT.md",
2026-07-26T22:33:02.7896769Z               "line": 179
2026-07-26T22:33:02.7896870Z             }
2026-07-26T22:33:02.7896975Z           ]
2026-07-26T22:33:02.7897073Z         },
2026-07-26T22:33:02.7897188Z         "impl": {
2026-07-26T22:33:02.7897301Z           "complete": true,
2026-07-26T22:33:02.7897419Z           "evidence": [
2026-07-26T22:33:02.7897514Z             {
2026-07-26T22:33:02.7897663Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:02.7897781Z               "line": 595
2026-07-26T22:33:02.7897883Z             }
2026-07-26T22:33:02.7897987Z           ]
2026-07-26T22:33:02.7898096Z         },
2026-07-26T22:33:02.7898207Z         "int": {
2026-07-26T22:33:02.7898429Z           "complete": false,
2026-07-26T22:33:02.7898554Z           "evidence": []
2026-07-26T22:33:02.7898654Z         },
2026-07-26T22:33:02.7898768Z         "unit": {
2026-07-26T22:33:02.7898883Z           "complete": true,
2026-07-26T22:33:02.7899064Z           "evidence": [
2026-07-26T22:33:02.7899165Z             {
2026-07-26T22:33:02.7899321Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:02.7899432Z               "line": 787
2026-07-26T22:33:02.7899541Z             },
2026-07-26T22:33:02.7899640Z             {
2026-07-26T22:33:02.7899773Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:02.7899877Z               "line": 811
2026-07-26T22:33:02.7899981Z             },
2026-07-26T22:33:02.7900081Z             {
2026-07-26T22:33:02.7900206Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:02.7900310Z               "line": 835
2026-07-26T22:33:02.7900415Z             }
2026-07-26T22:33:02.7900515Z           ]
2026-07-26T22:33:02.7900620Z         }
2026-07-26T22:33:02.7900706Z       }
2026-07-26T22:33:02.7900811Z     },
2026-07-26T22:33:02.7900906Z     {
2026-07-26T22:33:02.7901045Z       "id": "REQ-API-ENDPOINT-INFO",
2026-07-26T22:33:02.7904085Z       "title": "#7: spt api endpoint-info [<id>] (JSON) lets an endpoint learn its ATTACHED (controlling) node — claude-spt surfaces local + attached node names on UserPromptSubmit so the agent knows whether getting a file to the user needs extra steps (user RC'd in from another machine). spt api * is the harness-contract agent-facing surface (JSON-first, rides perch identity/auth so the bare no-<id> form self-resolves like whoami). Payload (committed DTO, additive-forever): { id, endpoint_type, adapter, local_node:{label,key}, attached_node:{label,key}|null, controlled:bool, project:<current project id>, cwd, subnets:[...] } — attached_node from controller stamps (driven_by remote / self-node when controlled with no remote driver), null when uncontrolled. HARD dependency on #2 + #3 (stamps must be honest first). Adapter-side consumable -> perri release-ping on publish. Naming: chose 'spt api endpoint-info' over alt 'spt endpoint get-info' — api is the agent surface (doc rationale). See docs/NEXT-MILESTONE-PICKER-TRIAGE.md #7.",
2026-07-26T22:33:02.7904282Z       "requiredStages": [
2026-07-26T22:33:02.7904381Z         "impl",
2026-07-26T22:33:02.7904485Z         "unit"
2026-07-26T22:33:02.7904592Z       ],
2026-07-26T22:33:02.7904691Z       "stages": {
2026-07-26T22:33:02.7904795Z         "doc": {
2026-07-26T22:33:02.7904914Z           "complete": false,
2026-07-26T22:33:02.7905032Z           "evidence": []
2026-07-26T22:33:02.7905131Z         },
2026-07-26T22:33:02.7905236Z         "impl": {
2026-07-26T22:33:02.7905351Z           "complete": true,
2026-07-26T22:33:02.7905469Z           "evidence": [
2026-07-26T22:33:02.7905570Z             {
2026-07-26T22:33:02.7905726Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7905832Z               "line": 850
2026-07-26T22:33:02.7905965Z             },
2026-07-26T22:33:02.7906060Z             {
2026-07-26T22:33:02.7906214Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7906451Z               "line": 862
2026-07-26T22:33:02.7906553Z             },
2026-07-26T22:33:02.7906648Z             {
2026-07-26T22:33:02.7906801Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7906910Z               "line": 916
2026-07-26T22:33:02.7907014Z             },
2026-07-26T22:33:02.7907116Z             {
2026-07-26T22:33:02.7907266Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7907387Z               "line": 945
2026-07-26T22:33:02.7907488Z             },
2026-07-26T22:33:02.7907591Z             {
2026-07-26T22:33:02.7907733Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7907857Z               "line": 965
2026-07-26T22:33:02.7907955Z             }
2026-07-26T22:33:02.7908055Z           ]
2026-07-26T22:33:02.7908156Z         },
2026-07-26T22:33:02.7908384Z         "int": {
2026-07-26T22:33:02.7908499Z           "complete": false,
2026-07-26T22:33:02.7908608Z           "evidence": []
2026-07-26T22:33:02.7908709Z         },
2026-07-26T22:33:02.7908813Z         "unit": {
2026-07-26T22:33:02.7908932Z           "complete": true,
2026-07-26T22:33:02.7909128Z           "evidence": [
2026-07-26T22:33:02.7909228Z             {
2026-07-26T22:33:02.7909382Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7909490Z               "line": 1058
2026-07-26T22:33:02.7909590Z             },
2026-07-26T22:33:02.7909687Z             {
2026-07-26T22:33:02.7909838Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7909953Z               "line": 1124
2026-07-26T22:33:02.7910055Z             }
2026-07-26T22:33:02.7910153Z           ]
2026-07-26T22:33:02.7910252Z         }
2026-07-26T22:33:02.7910353Z       }
2026-07-26T22:33:02.7910456Z     },
2026-07-26T22:33:02.7910555Z     {
2026-07-26T22:33:02.7910684Z       "id": "REQ-ARCH-1",
2026-07-26T22:33:02.7910832Z       "title": "Many small acyclically-layered crates",
2026-07-26T22:33:02.7910956Z       "requiredStages": [
2026-07-26T22:33:02.7911057Z         "impl"
2026-07-26T22:33:02.7911160Z       ],
2026-07-26T22:33:02.7911266Z       "stages": {
2026-07-26T22:33:02.7911376Z         "doc": {
2026-07-26T22:33:02.7911485Z           "complete": false,
2026-07-26T22:33:02.7911600Z           "evidence": []
2026-07-26T22:33:02.7911705Z         },
2026-07-26T22:33:02.7911804Z         "impl": {
2026-07-26T22:33:02.7911919Z           "complete": true,
2026-07-26T22:33:02.7912038Z           "evidence": [
2026-07-26T22:33:02.7912138Z             {
2026-07-26T22:33:02.7912287Z               "path": "crates/spt-msg/src/lib.rs",
2026-07-26T22:33:02.7912395Z               "line": 18
2026-07-26T22:33:02.7912491Z             },
2026-07-26T22:33:02.7912588Z             {
2026-07-26T22:33:02.7912724Z               "path": "crates/spt-proto/src/lib.rs",
2026-07-26T22:33:02.7912840Z               "line": 12
2026-07-26T22:33:02.7912950Z             },
2026-07-26T22:33:02.7913053Z             {
2026-07-26T22:33:02.7913191Z               "path": "crates/spt-store/src/lib.rs",
2026-07-26T22:33:02.7913311Z               "line": 12
2026-07-26T22:33:02.7913420Z             }
2026-07-26T22:33:02.7913520Z           ]
2026-07-26T22:33:02.7913626Z         },
2026-07-26T22:33:02.7913725Z         "int": {
2026-07-26T22:33:02.7913835Z           "complete": false,
2026-07-26T22:33:02.7913950Z           "evidence": []
2026-07-26T22:33:02.7914054Z         },
2026-07-26T22:33:02.7914159Z         "unit": {
2026-07-26T22:33:02.7914260Z           "complete": false,
2026-07-26T22:33:02.7914378Z           "evidence": []
2026-07-26T22:33:02.7914479Z         }
2026-07-26T22:33:02.7914575Z       }
2026-07-26T22:33:02.7914674Z     },
2026-07-26T22:33:02.7914770Z     {
2026-07-26T22:33:02.7914884Z       "id": "REQ-ARCH-2",
2026-07-26T22:33:02.7915084Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-07-26T22:33:02.7915209Z       "requiredStages": [
2026-07-26T22:33:02.7915312Z         "impl"
2026-07-26T22:33:02.7915407Z       ],
2026-07-26T22:33:02.7915610Z       "stages": {
2026-07-26T22:33:02.7915705Z         "doc": {
2026-07-26T22:33:02.7915830Z           "complete": false,
2026-07-26T22:33:02.7915930Z           "evidence": []
2026-07-26T22:33:02.7916034Z         },
2026-07-26T22:33:02.7916135Z         "impl": {
2026-07-26T22:33:02.7916259Z           "complete": true,
2026-07-26T22:33:02.7916358Z           "evidence": [
2026-07-26T22:33:02.7916460Z             {
2026-07-26T22:33:02.7916602Z               "path": "crates/spt-runtime/src/lib.rs",
2026-07-26T22:33:02.7916717Z               "line": 18
2026-07-26T22:33:02.7916812Z             }
2026-07-26T22:33:02.7916917Z           ]
2026-07-26T22:33:02.7917012Z         },
2026-07-26T22:33:02.7917122Z         "int": {
2026-07-26T22:33:02.7917231Z           "complete": false,
2026-07-26T22:33:02.7917356Z           "evidence": []
2026-07-26T22:33:02.7917551Z         },
2026-07-26T22:33:02.7917666Z         "unit": {
2026-07-26T22:33:02.7917785Z           "complete": false,
2026-07-26T22:33:02.7917903Z           "evidence": []
2026-07-26T22:33:02.7918005Z         }
2026-07-26T22:33:02.7918100Z       }
2026-07-26T22:33:02.7918198Z     },
2026-07-26T22:33:02.7918303Z     {
2026-07-26T22:33:02.7918417Z       "id": "REQ-ARCH-3",
2026-07-26T22:33:02.7918654Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-07-26T22:33:02.7918774Z       "requiredStages": [
2026-07-26T22:33:02.7918882Z         "impl",
2026-07-26T22:33:02.7919093Z         "unit"
2026-07-26T22:33:02.7919201Z       ],
2026-07-26T22:33:02.7919308Z       "stages": {
2026-07-26T22:33:02.7919412Z         "doc": {
2026-07-26T22:33:02.7919521Z           "complete": false,
2026-07-26T22:33:02.7919641Z           "evidence": []
2026-07-26T22:33:02.7919745Z         },
2026-07-26T22:33:02.7919845Z         "impl": {
2026-07-26T22:33:02.7919961Z           "complete": true,
2026-07-26T22:33:02.7920088Z           "evidence": [
2026-07-26T22:33:02.7920189Z             {
2026-07-26T22:33:02.7920333Z               "path": "crates/spt-proto/src/version.rs",
2026-07-26T22:33:02.7920446Z               "line": 34
2026-07-26T22:33:02.7920548Z             },
2026-07-26T22:33:02.7920648Z             {
2026-07-26T22:33:02.7920803Z               "path": "crates/spt-proto/src/version.rs",
2026-07-26T22:33:02.7920917Z               "line": 41
2026-07-26T22:33:02.7921016Z             }
2026-07-26T22:33:02.7925059Z           ]
2026-07-26T22:33:02.7925177Z         },
2026-07-26T22:33:02.7925296Z         "int": {
2026-07-26T22:33:02.7925421Z           "complete": false,
2026-07-26T22:33:02.7925539Z           "evidence": []
2026-07-26T22:33:02.7925640Z         },
2026-07-26T22:33:02.7925741Z         "unit": {
2026-07-26T22:33:02.7925858Z           "complete": true,
2026-07-26T22:33:02.7925972Z           "evidence": [
2026-07-26T22:33:02.7926077Z             {
2026-07-26T22:33:02.7926255Z               "path": "crates/spt-proto/src/version.rs",
2026-07-26T22:33:02.7926361Z               "line": 51
2026-07-26T22:33:02.7926462Z             },
2026-07-26T22:33:02.7926565Z             {
2026-07-26T22:33:02.7926724Z               "path": "crates/spt-proto/src/version.rs",
2026-07-26T22:33:02.7926828Z               "line": 71
2026-07-26T22:33:02.7926928Z             },
2026-07-26T22:33:02.7927024Z             {
2026-07-26T22:33:02.7927176Z               "path": "crates/spt-proto/src/version.rs",
2026-07-26T22:33:02.7927282Z               "line": 83
2026-07-26T22:33:02.7927387Z             }
2026-07-26T22:33:02.7927482Z           ]
2026-07-26T22:33:02.7927586Z         }
2026-07-26T22:33:02.7927682Z       }
2026-07-26T22:33:02.7927782Z     },
2026-07-26T22:33:02.7927877Z     {
2026-07-26T22:33:02.7927993Z       "id": "REQ-ARCH-4",
2026-07-26T22:33:02.7928192Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-07-26T22:33:02.7928307Z       "requiredStages": [
2026-07-26T22:33:02.7928420Z         "impl",
2026-07-26T22:33:02.7928526Z         "unit"
2026-07-26T22:33:02.7928627Z       ],
2026-07-26T22:33:02.7928725Z       "stages": {
2026-07-26T22:33:02.7929033Z         "doc": {
2026-07-26T22:33:02.7929151Z           "complete": false,
2026-07-26T22:33:02.7929252Z           "evidence": []
2026-07-26T22:33:02.7929357Z         },
2026-07-26T22:33:02.7929456Z         "impl": {
2026-07-26T22:33:02.7929577Z           "complete": true,
2026-07-26T22:33:02.7929677Z           "evidence": [
2026-07-26T22:33:02.7929776Z             {
2026-07-26T22:33:02.7929920Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:02.7930034Z               "line": 174
2026-07-26T22:33:02.7930134Z             },
2026-07-26T22:33:02.7930235Z             {
2026-07-26T22:33:02.7930377Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:02.7930483Z               "line": 197
2026-07-26T22:33:02.7930583Z             },
2026-07-26T22:33:02.7930682Z             {
2026-07-26T22:33:02.7930916Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:02.7931025Z               "line": 217
2026-07-26T22:33:02.7931132Z             },
2026-07-26T22:33:02.7931236Z             {
2026-07-26T22:33:02.7931372Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:02.7931473Z               "line": 232
2026-07-26T22:33:02.7931576Z             },
2026-07-26T22:33:02.7931675Z             {
2026-07-26T22:33:02.7931814Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:02.7931924Z               "line": 282
2026-07-26T22:33:02.7932019Z             }
2026-07-26T22:33:02.7932120Z           ]
2026-07-26T22:33:02.7932220Z         },
2026-07-26T22:33:02.7932324Z         "int": {
2026-07-26T22:33:02.7932444Z           "complete": false,
2026-07-26T22:33:02.7932549Z           "evidence": []
2026-07-26T22:33:02.7932648Z         },
2026-07-26T22:33:02.7932749Z         "unit": {
2026-07-26T22:33:02.7932863Z           "complete": true,
2026-07-26T22:33:02.7932982Z           "evidence": [
2026-07-26T22:33:02.7933112Z             {
2026-07-26T22:33:02.7933249Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:02.7933364Z               "line": 343
2026-07-26T22:33:02.7933454Z             },
2026-07-26T22:33:02.7933549Z             {
2026-07-26T22:33:02.7933689Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:02.7933797Z               "line": 353
2026-07-26T22:33:02.7933897Z             },
2026-07-26T22:33:02.7933999Z             {
2026-07-26T22:33:02.7934140Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:02.7934253Z               "line": 364
2026-07-26T22:33:02.7934350Z             },
2026-07-26T22:33:02.7934446Z             {
2026-07-26T22:33:02.7934582Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:02.7934689Z               "line": 375
2026-07-26T22:33:02.7934789Z             },
2026-07-26T22:33:02.7934893Z             {
2026-07-26T22:33:02.7935027Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:02.7935150Z               "line": 387
2026-07-26T22:33:02.7935251Z             },
2026-07-26T22:33:02.7935356Z             {
2026-07-26T22:33:02.7935493Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:02.7935614Z               "line": 400
2026-07-26T22:33:02.7935713Z             },
2026-07-26T22:33:02.7935808Z             {
2026-07-26T22:33:02.7935948Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:02.7936056Z               "line": 411
2026-07-26T22:33:02.7936157Z             },
2026-07-26T22:33:02.7936258Z             {
2026-07-26T22:33:02.7936395Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:02.7936499Z               "line": 428
2026-07-26T22:33:02.7936604Z             },
2026-07-26T22:33:02.7936702Z             {
2026-07-26T22:33:02.7936844Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:02.7936950Z               "line": 556
2026-07-26T22:33:02.7937055Z             }
2026-07-26T22:33:02.7937144Z           ]
2026-07-26T22:33:02.7937246Z         }
2026-07-26T22:33:02.7937341Z       }
2026-07-26T22:33:02.7937547Z     },
2026-07-26T22:33:02.7937646Z     {
2026-07-26T22:33:02.7937788Z       "id": "REQ-ATTACH-IDEMPOTENT-REPLAY",
2026-07-26T22:33:02.7943362Z       "title": "The equal-generation lease rung is idempotent for the same connection. (ADR-0047 decision 3, AMENDING ADR-0044's ladder inside the equal-gen rung; hertz v0.39.4 field bug 4, PINNED via OBS breadcrumbs on authorized same-seam `daemon refresh` 2026-07-22 — gen+1 premise FALSIFIED.) TODAY: a Control/Take subscribe with same identity + same nonzero gen classifies 'same lease, silent re-take' (broker.rs equal-gen branch — correct, no revoke) but re-take = become_controller, which unconditionally takes+drops the prior seat (writer exits channel-closed) with NO same-conn check — designed for the dead-seat dispatcher-restart successor, it also fires against the SAME LIVE conn re-served 15ms apart by post-cycle dispatcher replay: the lease kills its own writer, the rc viewer freezes until detach+re-attach (the field 'update freezes PTYs'). FIX: keyed (endpoint/session, by, conn, gen) — same-conn equal-gen = IDEMPOTENT REPLAY: seat + writer PRESERVED, no controller-replaced, no second initial batch; breadcrumb answers decision=idempotent (additive vocab). Equal-gen DIFFERENT-conn keeps today's silent swap (the ADR-0038 fix-6 successor — must not regress); strictly-newer keeps loud supersession, strictly-older keeps busy. BANKED open question (build-time look, not a blocker): why the dispatcher double-served one held attach 15ms apart — may have siblings. Gate: impl — the same-conn discriminator in resolve_subscribe's equal-gen branch + the idempotent decision label; unit — the four ladder cells (same-conn idempotent / different-conn swap / newer supersedes / older busy) against a mock seat; int — the bug-4 rig: replay one held Attach after a brain refresh, assert ONE writer + zero controller-replaced + the original rc interactive (RED-first), plus the different-conn successor leg stays green (redispatch/brain_swap suites).",
2026-07-26T22:33:02.7943723Z       "requiredStages": [
2026-07-26T22:33:02.7943828Z         "impl",
2026-07-26T22:33:02.7943924Z         "unit",
2026-07-26T22:33:02.7944029Z         "int"
2026-07-26T22:33:02.7944124Z       ],
2026-07-26T22:33:02.7944225Z       "stages": {
2026-07-26T22:33:02.7944321Z         "doc": {
2026-07-26T22:33:02.7944439Z           "complete": true,
2026-07-26T22:33:02.7944554Z           "evidence": [
2026-07-26T22:33:02.7944640Z             {
2026-07-26T22:33:02.7944842Z               "path": "docs/adr/0047-daemon-lifecycle-custody-authority.md",
2026-07-26T22:33:02.7944943Z               "line": 107
2026-07-26T22:33:02.7945048Z             }
2026-07-26T22:33:02.7945147Z           ]
2026-07-26T22:33:02.7945254Z         },
2026-07-26T22:33:02.7945358Z         "impl": {
2026-07-26T22:33:02.7945471Z           "complete": true,
2026-07-26T22:33:02.7945583Z           "evidence": [
2026-07-26T22:33:02.7945682Z             {
2026-07-26T22:33:02.7945830Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.7945949Z               "line": 1738
2026-07-26T22:33:02.7946053Z             },
2026-07-26T22:33:02.7946155Z             {
2026-07-26T22:33:02.7946302Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.7946416Z               "line": 1844
2026-07-26T22:33:02.7946508Z             }
2026-07-26T22:33:02.7946612Z           ]
2026-07-26T22:33:02.7946712Z         },
2026-07-26T22:33:02.7946818Z         "int": {
2026-07-26T22:33:02.7946931Z           "complete": true,
2026-07-26T22:33:02.7947044Z           "evidence": [
2026-07-26T22:33:02.7947145Z             {
2026-07-26T22:33:02.7947333Z               "path": "crates/spt-daemon/tests/attach_idempotent_replay.rs",
2026-07-26T22:33:02.7947443Z               "line": 242
2026-07-26T22:33:02.7947549Z             }
2026-07-26T22:33:02.7947648Z           ]
2026-07-26T22:33:02.7947757Z         },
2026-07-26T22:33:02.7947859Z         "unit": {
2026-07-26T22:33:02.7947972Z           "complete": true,
2026-07-26T22:33:02.7948087Z           "evidence": [
2026-07-26T22:33:02.7948311Z             {
2026-07-26T22:33:02.7948464Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.7948582Z               "line": 8165
2026-07-26T22:33:02.7948678Z             },
2026-07-26T22:33:02.7948783Z             {
2026-07-26T22:33:02.7948926Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.7949117Z               "line": 8231
2026-07-26T22:33:02.7949570Z             }
2026-07-26T22:33:02.7949766Z           ]
2026-07-26T22:33:02.7949888Z         }
2026-07-26T22:33:02.7950012Z       }
2026-07-26T22:33:02.7950130Z     },
2026-07-26T22:33:02.7950233Z     {
2026-07-26T22:33:02.7950406Z       "id": "REQ-ATTACH-RESIZE-REPAINT",
2026-07-26T22:33:02.7958527Z       "title": "RESCOPED 2026-07-22 by ADR-0047 Amendment 2 (doyle-ratified): this REQ no longer asserts a defect. Its original claim — that the attach-stream resize never arms the presentation barrier, and that this is v0.39.4 field bug 3's root — is RETRACTED; the W3 bisect falsified it three ways (static trace send_attach_resize -> serve_attach Resize arm -> brain.resize -> KIND_RESIZE -> dispatch_resize -> begin_resize_serialized; the synthetic sibling's pass; the broker's dynamic trace attach -> RESIZE_DISPATCH -> SYNC_PUSH{controller=true} with no RESIZE_SYNC_DROP) and then pinned the real root in the rc CLIENT's console mode (REQ-RC-NEWLINE-PRESENTATION-TRUTH / KNOWN-HAZARDS 7.56). The ADR-0047 Amendment 1 DECISION (geometry change = one transaction, one exit shape, any entry) stands on its own merits and is not disturbed. WHAT THIS REQ NOW OWNS — the captured-shape regression apparatus that the bisect proved worth keeping: hertz's ENLYZEAM production capture + its integrity pins (*.log -text, the fixture README sha256 table, per-record length refusal in both the player and the reader); the capture-player replay vehicle; and the probe ladder that makes any verdict from it mean something — vehicle transparency per CELL (ConPTY re-renders, so byte equality is unsatisfiable by construction), the pre-state soundness self-check (narrow-captured bytes into a wide authority is sound only if absolutely addressed), the capability probe re-run at every shape revision with its own precondition asserted, and the no-vehicle control (grid+resize+repaint over the same bytes = 0 divergent rows, the standing proof the seam is clean). Oracle clauses are binding for this rig class and are written out in Amendment 2. Gate: unit — the vehicle-transparency predicate + its non-vacuity sibling + the record-integrity refusals; int — the client-model rig pair (rc-fixed vehicle = clean, rc vehicle = reproduces the field scrap) plus the no-vehicle control. NO impl stage: there is no broker-side implementation owed, and pretending otherwise would point an activated stage at evidence that does not exist. Kin: REQ-RC-NEWLINE-PRESENTATION-TRUTH (the actual fix), REQ-RESIZE-INPUT-MODE-INTEGRITY (7.55, untouched — its capture has no replay vehicle in its path).",
2026-07-26T22:33:02.7959086Z       "requiredStages": [
2026-07-26T22:33:02.7959214Z         "unit",
2026-07-26T22:33:02.7959315Z         "int"
2026-07-26T22:33:02.7959414Z       ],
2026-07-26T22:33:02.7959524Z       "stages": {
2026-07-26T22:33:02.7959630Z         "doc": {
2026-07-26T22:33:02.7959753Z           "complete": true,
2026-07-26T22:33:02.7959848Z           "evidence": [
2026-07-26T22:33:02.7959950Z             {
2026-07-26T22:33:02.7960091Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.7960202Z               "line": 775
2026-07-26T22:33:02.7960298Z             },
2026-07-26T22:33:02.7960406Z             {
2026-07-26T22:33:02.7960591Z               "path": "docs/adr/0047-daemon-lifecycle-custody-authority.md",
2026-07-26T22:33:02.7960699Z               "line": 167
2026-07-26T22:33:02.7960793Z             },
2026-07-26T22:33:02.7960899Z             {
2026-07-26T22:33:02.7961108Z               "path": "docs/adr/0047-daemon-lifecycle-custody-authority.md",
2026-07-26T22:33:02.7961229Z               "line": 252
2026-07-26T22:33:02.7961437Z             }
2026-07-26T22:33:02.7961529Z           ]
2026-07-26T22:33:02.7961624Z         },
2026-07-26T22:33:02.7961719Z         "impl": {
2026-07-26T22:33:02.7961824Z           "complete": false,
2026-07-26T22:33:02.7961939Z           "evidence": []
2026-07-26T22:33:02.7962038Z         },
2026-07-26T22:33:02.7962148Z         "int": {
2026-07-26T22:33:02.7962263Z           "complete": true,
2026-07-26T22:33:02.7962372Z           "evidence": [
2026-07-26T22:33:02.7962463Z             {
2026-07-26T22:33:02.7962648Z               "path": "crates/spt-daemon/tests/attach_resize_capture.rs",
2026-07-26T22:33:02.7962754Z               "line": 338
2026-07-26T22:33:02.7962855Z             },
2026-07-26T22:33:02.7962949Z             {
2026-07-26T22:33:02.7963129Z               "path": "crates/spt-daemon/tests/attach_resize_capture.rs",
2026-07-26T22:33:02.7963360Z               "line": 356
2026-07-26T22:33:02.7963461Z             },
2026-07-26T22:33:02.7963562Z             {
2026-07-26T22:33:02.7963737Z               "path": "crates/spt-daemon/tests/attach_resize_capture.rs",
2026-07-26T22:33:02.7963853Z               "line": 396
2026-07-26T22:33:02.7963952Z             },
2026-07-26T22:33:02.7964052Z             {
2026-07-26T22:33:02.7964219Z               "path": "crates/spt-daemon/tests/attach_resize_capture.rs",
2026-07-26T22:33:02.7964337Z               "line": 453
2026-07-26T22:33:02.7964434Z             },
2026-07-26T22:33:02.7964538Z             {
2026-07-26T22:33:02.7964700Z               "path": "crates/spt-daemon/tests/attach_resize_repaint.rs",
2026-07-26T22:33:02.7964806Z               "line": 297
2026-07-26T22:33:02.7964896Z             },
2026-07-26T22:33:02.7964987Z             {
2026-07-26T22:33:02.7965149Z               "path": "crates/spt-daemon/tests/attach_resize_repaint.rs",
2026-07-26T22:33:02.7965268Z               "line": 318
2026-07-26T22:33:02.7965370Z             }
2026-07-26T22:33:02.7965469Z           ]
2026-07-26T22:33:02.7965573Z         },
2026-07-26T22:33:02.7965679Z         "unit": {
2026-07-26T22:33:02.7965798Z           "complete": true,
2026-07-26T22:33:02.7965911Z           "evidence": [
2026-07-26T22:33:02.7966011Z             {
2026-07-26T22:33:02.7966182Z               "path": "crates/spt-term/tests/capture_vehicle_fidelity.rs",
2026-07-26T22:33:02.7966291Z               "line": 153
2026-07-26T22:33:02.7966388Z             }
2026-07-26T22:33:02.7966493Z           ]
2026-07-26T22:33:02.7966592Z         }
2026-07-26T22:33:02.7966684Z       }
2026-07-26T22:33:02.7966774Z     },
2026-07-26T22:33:02.7966873Z     {
2026-07-26T22:33:02.7967018Z       "id": "REQ-ATTACH-SEED-REQUEST-DOUBLE-SERVE",
2026-07-26T22:33:02.7973252Z       "title": "A dispatcher-SEEDED attach Request is honored ONCE — the wire replay's copy of that same Request must not re-establish it. (Seed: DAEMON-LIFECYCLE W1 build, answering ADR-0047 decision 3's banked open question; origin CODE-PROVEN, not inferred.) THE ORIGIN: serve_attach (spt-daemon/src/attach.rs) processes the dispatcher-pinned `seed_request` through handle_attach_request BEFORE its event loop (ADR-0038 B, the durable-opener seed — it exists because a ROLLED ring can no longer replay the Request). It then subscribes the stream from the floor and enters the loop, whose `AttachRecord::Request` arm calls handle_attach_request UNCONDITIONALLY — there is NO `!attached` guard, and NO record that the seed already established this exact Request. When the ring has NOT rolled, the wire replay still carries that Request, so the SAME record is handled TWICE on the SAME conn, milliseconds apart, with identical (session_id, from_seq, intent, gen, identity) — exactly hertz's v0.39.4 bug-4 capture (conn1011, 15ms apart, post-refresh replay). The two arms are the same function on the same seed record; the seed is pinned by the dispatcher on the post-cycle replay, which is the field trigger. SIBLINGS to check at triage: any other serve family that seeds an opener record AND re-reads it from the replay (xfer/rest seeds), and whether a re-established seat should also re-run the access check. FIX SHAPE (not built, W1 deliberately shipped the broker-side idempotence instead): the serve worker knows it already honored a Request — a guard on the loop's Request arm (already attached + same record = ignore), which fixes the ORIGIN rather than absorbing it at the broker. The broker idempotence stays regardless: it closes the symptom for EVERY origin, including origins not yet found. A serve-path int rig replaying the REAL double-serve shape belongs to this REQ, not to W1 (doyle ruling 2026-07-22: do not simulate a behavior we have not explained). Kin REQ-ATTACH-IDEMPOTENT-REPLAY (the broker-side absorber), REQ-STREAM-OPENER-DURABLE (why the seed exists), ADR-0038 B.",
2026-07-26T22:33:02.7973608Z       "requiredStages": [],
2026-07-26T22:33:02.7973714Z       "stages": {
2026-07-26T22:33:02.7973817Z         "doc": {
2026-07-26T22:33:02.7974045Z           "complete": false,
2026-07-26T22:33:02.7974150Z           "evidence": []
2026-07-26T22:33:02.7974249Z         },
2026-07-26T22:33:02.7974374Z         "impl": {
2026-07-26T22:33:02.7974493Z           "complete": false,
2026-07-26T22:33:02.7974593Z           "evidence": []
2026-07-26T22:33:02.7974694Z         },
2026-07-26T22:33:02.7974794Z         "int": {
2026-07-26T22:33:02.7974912Z           "complete": false,
2026-07-26T22:33:02.7975028Z           "evidence": []
2026-07-26T22:33:02.7975112Z         },
2026-07-26T22:33:02.7975222Z         "unit": {
2026-07-26T22:33:02.7975338Z           "complete": false,
2026-07-26T22:33:02.7975447Z           "evidence": []
2026-07-26T22:33:02.7975551Z         }
2026-07-26T22:33:02.7975652Z       }
2026-07-26T22:33:02.7975752Z     },
2026-07-26T22:33:02.7975852Z     {
2026-07-26T22:33:02.7975977Z       "id": "REQ-BIND-HONEST-SELF-STAMP",
2026-07-26T22:33:02.7980159Z       "title": "C2-ROOT (F028, doyle RCA 2026-07-03): the identity-attribution ROOT behind REQ-SESSIONS-LOG-ENDPOINT-ATTRIBUTION — three composing defects let a psyche-hosted SessionStart hook stamp a FOREIGN perch: (1) roster::detect_self_id leg (a) scans the owlery ONE level (roster.rs:107 read_dir(owlery)) so a NESTED psyche perch owlery/<parent>/nested/<id>-psyche can never self-resolve; (2) [session.psyche_init] (claude-spt manifest ~L347) spawns the psyche with NO env_remove + no pinned child identity, so whatever OWL_SESSION_ID/SPT_AGENT_ID reaches the child resolves to a foreign top-level perch; (3) the hook then writes info.json (session_id/pid rebind) + sessions.log on the mis-resolved victim. FIX (spt-core half): (i) identity PINNED at spawn — ManifestRuntime role spawns inject the child's OWN SPT_AGENT_ID=<child perch id> + OWL_SESSION_ID=<child session>, AND detect_self_id enumerates NESTED perches (fix the one-level owlery scan); (ii) BIND HONESTY — a session-start stamp may only write a perch whose resolved id AFFIRMATIVELY matches; never a fallback pick; refuse + loud-skip when unresolved (kin REQ-MSG-CLI-ORIGIN honest-default + #9 ancestry). ADAPTER half = PERRI touchpoint (psyche_init env scrubbing / relies on runtime pinning; hook loses silent fallback-perch behavior) — FLAG doyle BEFORE any manifest move (adapter glue-model rule). See triage C2 fix (i)+(ii).",
2026-07-26T22:33:02.7980372Z       "requiredStages": [
2026-07-26T22:33:02.7980474Z         "impl",
2026-07-26T22:33:02.7980578Z         "unit",
2026-07-26T22:33:02.7980677Z         "int"
2026-07-26T22:33:02.7980779Z       ],
2026-07-26T22:33:02.7980882Z       "stages": {
2026-07-26T22:33:02.7980983Z         "doc": {
2026-07-26T22:33:02.7981099Z           "complete": false,
2026-07-26T22:33:02.7981202Z           "evidence": []
2026-07-26T22:33:02.7981298Z         },
2026-07-26T22:33:02.7981394Z         "impl": {
2026-07-26T22:33:02.7981507Z           "complete": true,
2026-07-26T22:33:02.7981606Z           "evidence": [
2026-07-26T22:33:02.7981707Z             {
2026-07-26T22:33:02.7981847Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:02.7981986Z               "line": 528
2026-07-26T22:33:02.7982086Z             },
2026-07-26T22:33:02.7982319Z             {
2026-07-26T22:33:02.7982458Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:02.7982567Z               "line": 217
2026-07-26T22:33:02.7982659Z             },
2026-07-26T22:33:02.7982763Z             {
2026-07-26T22:33:02.7982891Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:02.7983012Z               "line": 132
2026-07-26T22:33:02.7983111Z             }
2026-07-26T22:33:02.7983206Z           ]
2026-07-26T22:33:02.7983308Z         },
2026-07-26T22:33:02.7983406Z         "int": {
2026-07-26T22:33:02.7983511Z           "complete": true,
2026-07-26T22:33:02.7983613Z           "evidence": [
2026-07-26T22:33:02.7983698Z             {
2026-07-26T22:33:02.7983879Z               "path": "crates/spt/tests/bind_honest_cross_perch_e2e.rs",
2026-07-26T22:33:02.7983975Z               "line": 180
2026-07-26T22:33:02.7984163Z             }
2026-07-26T22:33:02.7984259Z           ]
2026-07-26T22:33:02.7984358Z         },
2026-07-26T22:33:02.7984471Z         "unit": {
2026-07-26T22:33:02.7984586Z           "complete": true,
2026-07-26T22:33:02.7984701Z           "evidence": [
2026-07-26T22:33:02.7984809Z             {
2026-07-26T22:33:02.7984939Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:02.7985058Z               "line": 484
2026-07-26T22:33:02.7985153Z             },
2026-07-26T22:33:02.7985244Z             {
2026-07-26T22:33:02.7985378Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:02.7985472Z               "line": 418
2026-07-26T22:33:02.7985569Z             }
2026-07-26T22:33:02.7985668Z           ]
2026-07-26T22:33:02.7985768Z         }
2026-07-26T22:33:02.7985860Z       }
2026-07-26T22:33:02.7985955Z     },
2026-07-26T22:33:02.7986054Z     {
2026-07-26T22:33:02.7986199Z       "id": "REQ-BIND-PSYCHE-CUSTODY-SQUAT-GUARD",
2026-07-26T22:33:02.7988782Z       "title": "MSG-IDENTITY W1 / F-036 leg c (perri field RCA, doyle ACCEPTED defense-in-depth): a bind whose --set-session-id equals a NESTED psyche perch's own custody sid is definitionally wrong and MUST be refused — core owns psyche-custody.json and can see the collision at bind time. ROOT CONTEXT: with the F-036 env leak, each stolen bind carried a psyche sid as the new pin; the identity-env sanitize (leg a) removes the known vector, this guard makes the CLASS unreachable (any future vector that tries to rotate a real endpoint's perch onto a psyche's custody sid is refused loud). Gate: a bind attempt whose target sid appears in psyche-custody.json as a psyche's OWN sid is REFUSED with a distinct loud token (unit: custody-sid collision refuses; a normal non-custody sid bind is unaffected). Kin REQ-PSYCHE-SID-CUSTODY, session-pin cluster, [[spt-core-findings-backlog]] F-036.",
2026-07-26T22:33:02.7988919Z       "requiredStages": [
2026-07-26T22:33:02.7989106Z         "impl",
2026-07-26T22:33:02.7989223Z         "unit"
2026-07-26T22:33:02.7989327Z       ],
2026-07-26T22:33:02.7989428Z       "stages": {
2026-07-26T22:33:02.7989526Z         "doc": {
2026-07-26T22:33:02.7989669Z           "complete": false,
2026-07-26T22:33:02.7989774Z           "evidence": []
2026-07-26T22:33:02.7989865Z         },
2026-07-26T22:33:02.7989959Z         "impl": {
2026-07-26T22:33:02.7990066Z           "complete": true,
2026-07-26T22:33:02.7990184Z           "evidence": [
2026-07-26T22:33:02.7990279Z             {
2026-07-26T22:33:02.7990442Z               "path": "crates/spt-store/src/psyche_custody.rs",
2026-07-26T22:33:02.7990551Z               "line": 105
2026-07-26T22:33:02.7990652Z             },
2026-07-26T22:33:02.7990756Z             {
2026-07-26T22:33:02.7990894Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:02.7990991Z               "line": 135
2026-07-26T22:33:02.7991094Z             },
2026-07-26T22:33:02.7991190Z             {
2026-07-26T22:33:02.7991339Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7991457Z               "line": 54
2026-07-26T22:33:02.7991557Z             },
2026-07-26T22:33:02.7991645Z             {
2026-07-26T22:33:02.7991921Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.7992030Z               "line": 385
2026-07-26T22:33:02.7992133Z             }
2026-07-26T22:33:02.7992234Z           ]
2026-07-26T22:33:02.7992343Z         },
2026-07-26T22:33:02.7992431Z         "int": {
2026-07-26T22:33:02.7992551Z           "complete": false,
2026-07-26T22:33:02.7992651Z           "evidence": []
2026-07-26T22:33:02.7992751Z         },
2026-07-26T22:33:02.7992855Z         "unit": {
2026-07-26T22:33:02.7992975Z           "complete": true,
2026-07-26T22:33:02.7993084Z           "evidence": [
2026-07-26T22:33:02.7993180Z             {
2026-07-26T22:33:02.7993333Z               "path": "crates/spt-store/src/psyche_custody.rs",
2026-07-26T22:33:02.7993442Z               "line": 216
2026-07-26T22:33:02.7993543Z             },
2026-07-26T22:33:02.7993738Z             {
2026-07-26T22:33:02.7993887Z               "path": "crates/spt-store/src/psyche_custody.rs",
2026-07-26T22:33:02.7994004Z               "line": 244
2026-07-26T22:33:02.7994110Z             },
2026-07-26T22:33:02.7994211Z             {
2026-07-26T22:33:02.7994338Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:02.7994449Z               "line": 513
2026-07-26T22:33:02.7994550Z             },
2026-07-26T22:33:02.7994653Z             {
2026-07-26T22:33:02.7994795Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:02.7994909Z               "line": 547
2026-07-26T22:33:02.7995017Z             },
2026-07-26T22:33:02.7995117Z             {
2026-07-26T22:33:02.7995270Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7995379Z               "line": 1230
2026-07-26T22:33:02.7995476Z             },
2026-07-26T22:33:02.7995575Z             {
2026-07-26T22:33:02.7995718Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.7995828Z               "line": 1258
2026-07-26T22:33:02.7995928Z             },
2026-07-26T22:33:02.7996027Z             {
2026-07-26T22:33:02.7996181Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.7996290Z               "line": 1908
2026-07-26T22:33:02.7996391Z             },
2026-07-26T22:33:02.7996486Z             {
2026-07-26T22:33:02.7996634Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.7996735Z               "line": 1948
2026-07-26T22:33:02.7996838Z             },
2026-07-26T22:33:02.7996939Z             {
2026-07-26T22:33:02.7997078Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.7997191Z               "line": 2224
2026-07-26T22:33:02.7997292Z             }
2026-07-26T22:33:02.7997393Z           ]
2026-07-26T22:33:02.7997492Z         }
2026-07-26T22:33:02.7997591Z       }
2026-07-26T22:33:02.7997691Z     },
2026-07-26T22:33:02.7997783Z     {
2026-07-26T22:33:02.7997924Z       "id": "REQ-BOUNDARY-ROTATION-CREDENTIAL",
2026-07-26T22:33:02.7999380Z       "title": "api boundary's rotation credential is designed, documented, and eventually anchor-proven (ADR-0032): the proof is the DEPARTED session's (prior sid / token) — --to-session-id is payload, never proof; the published surface documents the adapter prior-sid persistence pattern + loud-refusal requirement; the design-true end-state additionally accepts an OS-verified parent_pid-anchor ancestry proof making adapter sid-state optional",
2026-07-26T22:33:02.7999508Z       "requiredStages": [
2026-07-26T22:33:02.7999609Z         "doc"
2026-07-26T22:33:02.7999709Z       ],
2026-07-26T22:33:02.7999807Z       "stages": {
2026-07-26T22:33:02.7999907Z         "doc": {
2026-07-26T22:33:02.8000017Z           "complete": true,
2026-07-26T22:33:02.8000115Z           "evidence": [
2026-07-26T22:33:02.8000214Z             {
2026-07-26T22:33:02.8000378Z               "path": "docs-site/src/harness-contract/api.md",
2026-07-26T22:33:02.8000491Z               "line": 171
2026-07-26T22:33:02.8000616Z             },
2026-07-26T22:33:02.8000716Z             {
2026-07-26T22:33:02.8000897Z               "path": "docs/adr/0032-boundary-rotation-credential.md",
2026-07-26T22:33:02.8001120Z               "line": 3
2026-07-26T22:33:02.8001222Z             }
2026-07-26T22:33:02.8001321Z           ]
2026-07-26T22:33:02.8001416Z         },
2026-07-26T22:33:02.8001522Z         "impl": {
2026-07-26T22:33:02.8001631Z           "complete": false,
2026-07-26T22:33:02.8001736Z           "evidence": []
2026-07-26T22:33:02.8001832Z         },
2026-07-26T22:33:02.8001932Z         "int": {
2026-07-26T22:33:02.8002046Z           "complete": false,
2026-07-26T22:33:02.8002157Z           "evidence": []
2026-07-26T22:33:02.8002257Z         },
2026-07-26T22:33:02.8002356Z         "unit": {
2026-07-26T22:33:02.8002471Z           "complete": false,
2026-07-26T22:33:02.8002590Z           "evidence": []
2026-07-26T22:33:02.8002689Z         }
2026-07-26T22:33:02.8002784Z       }
2026-07-26T22:33:02.8002968Z     },
2026-07-26T22:33:02.8003072Z     {
2026-07-26T22:33:02.8003206Z       "id": "REQ-BRAIN-HASH-ONCE",
2026-07-26T22:33:02.8006102Z       "title": "REGISTRY-LIFECYCLE W1 (ADR-0040 rider; dropped THE-FORKENING W4 rider escalated — hertz re-measured live 2026-07-17: 61.29 MiB/s predicted vs 63.91 observed, 15.5%/core): the brain executable self-hash is captured EXACTLY ONCE per brain process (OnceLock in run_brain before the heartbeat loop); every write_ready reuses the cached value; failed capture stays None with no per-tick retry; current_exe_hash doc-comment corrected same commit. Once-at-start capture IS the resident-bytes truthfulness contract: the per-tick PATH re-read published the NEW file hash from a resident-OLD-bytes brain post-swap (breadcrumb lie in the enlyzeam class it exists to catch). 500ms ready-write cadence unchanged. Gate: impl — cached capture; unit — injected digest-counter==1 across initial+N heartbeat publishes with pid/generation/hash stable, fresh process fixture computes independently; existing D7 process-replacement e2e retained green (new brain publishes new hash first write).",
2026-07-26T22:33:02.8006273Z       "requiredStages": [
2026-07-26T22:33:02.8006402Z         "impl",
2026-07-26T22:33:02.8006502Z         "unit"
2026-07-26T22:33:02.8006597Z       ],
2026-07-26T22:33:02.8006699Z       "stages": {
2026-07-26T22:33:02.8006803Z         "doc": {
2026-07-26T22:33:02.8006926Z           "complete": false,
2026-07-26T22:33:02.8007037Z           "evidence": []
2026-07-26T22:33:02.8007151Z         },
2026-07-26T22:33:02.8007261Z         "impl": {
2026-07-26T22:33:02.8007384Z           "complete": true,
2026-07-26T22:33:02.8007480Z           "evidence": [
2026-07-26T22:33:02.8007586Z             {
2026-07-26T22:33:02.8007737Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.8007857Z               "line": 401
2026-07-26T22:33:02.8007953Z             }
2026-07-26T22:33:02.8008042Z           ]
2026-07-26T22:33:02.8008141Z         },
2026-07-26T22:33:02.8008251Z         "int": {
2026-07-26T22:33:02.8008362Z           "complete": false,
2026-07-26T22:33:02.8008475Z           "evidence": []
2026-07-26T22:33:02.8008576Z         },
2026-07-26T22:33:02.8008681Z         "unit": {
2026-07-26T22:33:02.8008785Z           "complete": true,
2026-07-26T22:33:02.8008896Z           "evidence": [
2026-07-26T22:33:02.8009071Z             {
2026-07-26T22:33:02.8009225Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.8009343Z               "line": 2186
2026-07-26T22:33:02.8009438Z             }
2026-07-26T22:33:02.8009530Z           ]
2026-07-26T22:33:02.8009630Z         }
2026-07-26T22:33:02.8009734Z       }
2026-07-26T22:33:02.8009830Z     },
2026-07-26T22:33:02.8009930Z     {
2026-07-26T22:33:02.8010073Z       "id": "REQ-BRAIN-RESUME-NO-CONN-DEADLOCK",
2026-07-26T22:33:02.8021108Z       "title": "UPDATE-WEDGE round 3 (v0.30.5, doyle-ruled Option A 2026-07-09 — the v0.30.4 field-verify re-wedge, root code-PROVEN + dead-peer-INDEPENDENT): the daemon brain must NOT subscribe broker PTY sessions onto its own request/reply IPC conn — it has no consumer for that output and the subscription DEADLOCKS the conn. ROOT (todlando code-read, docs/UPDATE-WEDGE-2-ROUND3-CODEREAD.md; the net-runtime AND the counter-54 reap-drive were both FALSIFIED first — docs/UPDATE-WEDGE-2-ROUND3-RIG-VERDICT.md): a conn's send half is a single `SharedSend = Arc<Mutex<SendHalf>>` (broker.rs:78). Subscriber writer threads (`viewer_writer` broker.rs:1333/1342, `controller_writer` :1451) hold `send.lock()` ACROSS a BLOCKING `write_frame`; the dispatch reply path (`send_frame` :4221 → KIND_SESSIONS_REPLY / KIND_NET_STATUS_REPLY) needs the SAME lock. `resume_sessions` (brain.rs:1031→1054) subscribes every session as a Viewer onto the brain's MAIN conn — which is ALSO the brain's request/reply channel. The daemon brain hosts no PTY sessions (brainproc.rs:184) so run_brain never drains that output; it reads the conn only during the 500ms-heartbeat net_status()/sessions() calls (drain-and-DISCARD, `_ => continue`). When an actively-streaming session backs the conn up, a subscriber writer BLOCKS in write_frame holding send.lock() → the dispatch thread can't send the heartbeat reply → net_status()/sessions() never return → the heartbeat loop stalls → the brain never drains → the writer stays blocked = SELF-DEADLOCK on the brain conn's send mutex → every subscriber writer on it wedges → BRAIN_SUBSCRIBER_STALL_EVICT (controller writer blocked >15s). BOTH severities, one mechanism: RESPAWN (resume subscribes N + the replay burst floods the conn before the loop drains) AND STEADY-STATE (an active streamer's output between heartbeats fills the socket buffer). Counter-54 (REQ-UPDATE-TRIAL-DRAIN-DRIVE) added a 2nd per-heartbeat reply round-trip (sessions()) through the contended mutex — WIDENED the window (regression-window-exact), did not create it. The round-2 Viewer fix (REQ-BRAIN-RESUME-NO-CONTROL-STEAL) removed the STEAL but kept the brain a SUBSCRIBER — viewer_writer has the same send.lock()-across-write pattern AND viewers have no stall-evict valve — so v0.30.4 field-verify wedged again. FIX (Option A, brain-side, SEAMLESS): resume_sessions does NOT subscribe (drop the subscribe_with call; §3 verification guard confirmed NO brain consumer — digest/relay/net-consumer/shellwake/presence — reads the resumed subs). The brain conn then carries only request/reply → no subscriber backpressure → no deadlock. Keep the session_cursors seed only if harmless. Rides the brain-swap ⇒ seamless (no daemon.rs:368 broker restart). Option B (a dedicated Split-reader drain of the brain conn, brain.rs:230 — the pump's carrier) is the FORWARD path for when genuinely daemon-DRIVEN sessions land (the live-agent adapter) — deferred, noted, not built. Option C (the broker-side durable CLASS fix) = REQ-HAZARD-SHAREDSEND-NO-BLOCKING-WRITE-UNDER-LOCK, deferred. Int = the confirmer rig (brain+broker+PTY, brain_decouple template): N sessions actively producing output, brain resume-subscribed onto its req/reply conn; RED-first = heartbeat stalls + an active-streaming controller stall-evicted >15s WITHOUT any dead peer present (proves dead-peer-independence); assert BOTH severities (respawn interleave + steady-state output backup); Option A turns both green. Composes with REQ-BRAIN-RESUME-NO-CONTROL-STEAL (the round-2 Viewer fix this supersedes as the wedge cure), REQ-UPDATE-TRIAL-DRAIN-DRIVE (the counter-54 reap-drive that widened the window), REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE (the stall-evict it stops triggering).",
2026-07-26T22:33:02.8021712Z       "requiredStages": [
2026-07-26T22:33:02.8021812Z         "doc",
2026-07-26T22:33:02.8021916Z         "impl",
2026-07-26T22:33:02.8022018Z         "int"
2026-07-26T22:33:02.8022118Z       ],
2026-07-26T22:33:02.8022212Z       "stages": {
2026-07-26T22:33:02.8022308Z         "doc": {
2026-07-26T22:33:02.8022418Z           "complete": true,
2026-07-26T22:33:02.8022527Z           "evidence": [
2026-07-26T22:33:02.8022627Z             {
2026-07-26T22:33:02.8022775Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.8022884Z               "line": 1207
2026-07-26T22:33:02.8022986Z             }
2026-07-26T22:33:02.8023162Z           ]
2026-07-26T22:33:02.8023253Z         },
2026-07-26T22:33:02.8023358Z         "impl": {
2026-07-26T22:33:02.8023471Z           "complete": true,
2026-07-26T22:33:02.8023582Z           "evidence": [
2026-07-26T22:33:02.8023678Z             {
2026-07-26T22:33:02.8023833Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.8023952Z               "line": 1237
2026-07-26T22:33:02.8024069Z             },
2026-07-26T22:33:02.8024154Z             {
2026-07-26T22:33:02.8024318Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.8024427Z               "line": 201
2026-07-26T22:33:02.8024531Z             },
2026-07-26T22:33:02.8024632Z             {
2026-07-26T22:33:02.8024779Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8024880Z               "line": 3969
2026-07-26T22:33:02.8025084Z             }
2026-07-26T22:33:02.8025175Z           ]
2026-07-26T22:33:02.8025271Z         },
2026-07-26T22:33:02.8025361Z         "int": {
2026-07-26T22:33:02.8025562Z           "complete": true,
2026-07-26T22:33:02.8025666Z           "evidence": [
2026-07-26T22:33:02.8025771Z             {
2026-07-26T22:33:02.8025962Z               "path": "crates/spt-daemon/tests/brain_resume_conn_deadlock.rs",
2026-07-26T22:33:02.8026076Z               "line": 221
2026-07-26T22:33:02.8026168Z             },
2026-07-26T22:33:02.8026268Z             {
2026-07-26T22:33:02.8026446Z               "path": "crates/spt-daemon/tests/brain_resume_conn_deadlock.rs",
2026-07-26T22:33:02.8026552Z               "line": 240
2026-07-26T22:33:02.8026655Z             },
2026-07-26T22:33:02.8026754Z             {
2026-07-26T22:33:02.8026937Z               "path": "crates/spt-daemon/tests/brain_resume_conn_deadlock.rs",
2026-07-26T22:33:02.8027045Z               "line": 289
2026-07-26T22:33:02.8027141Z             }
2026-07-26T22:33:02.8027256Z           ]
2026-07-26T22:33:02.8027355Z         },
2026-07-26T22:33:02.8027461Z         "unit": {
2026-07-26T22:33:02.8027585Z           "complete": false,
2026-07-26T22:33:02.8027694Z           "evidence": []
2026-07-26T22:33:02.8027781Z         }
2026-07-26T22:33:02.8027880Z       }
2026-07-26T22:33:02.8027975Z     },
2026-07-26T22:33:02.8028076Z     {
2026-07-26T22:33:02.8028218Z       "id": "REQ-BRAIN-RESUME-NO-CONTROL-STEAL",
2026-07-26T22:33:02.8039581Z       "title": "UPDATE-WEDGE round 2 (v0.30.4, doyle-ruled 2026-07-09 — field incident on the counter-54 fetch--apply): a brain-respawn must NEVER steal, then stall-evict, the controller of a broker PTY session the daemon brain does not DRIVE. ROOT (field-pinned + SME, docs/UPDATE-WEDGE-2-RCA.md + docs/UPDATE-WEDGE-2-SME-todlando.md): `resume_sessions` (brain.rs:985) re-attaches EVERY session `KIND_SESSIONS` returns via `subscribe` = `subscribe_with(AttachIntent::Control, by:None)` (brain.rs:1450-1455). The docstring's 'a None identity never displaces (falls back to viewer)' is a MYTH for FREE / SAME-LOCAL-IDENTITY slots: `resolve_subscribe` (broker.rs:1134-1153) stall-evicts FIRST, then `become_controller` if the slot is now free OR the incumbent is also local (None==None) — viewer-fallback fires ONLY when a DIFFERENT REMOTE controls. So on a box with N spt-hosted broker PTYs, a brain-respawn STEALS the by:None controller of every free/local-controlled session (incl. the operator's LOCAL `spt rc`), which the daemon brain never drains (it hosts no PTY sessions — brainproc.rs:184) → 15s later `stall_evict_controller` (broker.rs:1039) releases driven_by → the session is UNCONTROLLABLE (Failure A). It also head-of-line-blocks the shared brain↔broker conn on the N-session controller-replay burst → every journaled `spt rc` retake deadlines ('brain IPC read deadline', the REQ-BROKER-ATTACH-JOURNAL-RESILIENT / #16 shared-conn symptom) → global rc failure on ALL N (Failure B). Field 2026-07-09 (operator-confirmed): fetch--apply 0.30.2→0.30.3 PROMOTED CLEANLY (the counter-54 fix worked) but under 7 spt-hosted PTYs (ALL with LOCAL by:None controllers) the resume SILENTLY STOLE all 7 (become_controller same-local re-take, NO Displaced notice → orphaned, output froze immediately, no rc-detach splash) + blocked every rc retake. The 5-vs-2 stall-evict split is ACTIVE-vs-IDLE, not remote-vs-local: 5 producing output → stolen writer blocked >15s → stall-evict; 2 idle → writer parked → no evict, but still silently stolen+frozen. The counter-54 promotion fix did NOT cause this — pre-existing resume-steal latent bug, hidden until N broker PTYs were present at a respawn; the single-black-holed-session A'-rig never exercised N-live-controllers-under-replay. FIX (brain-side): `resume_sessions` re-attaches as **Viewer** (`AttachIntent::Viewer`), NOT Control — a viewer never touches driven_by and is never stall-evicted (broker.rs:1063+ bounded try_send + private eviction), so steal-then-drop vanishes and the operator keeps/regains control; and it relieves shared-conn pressure (a slow viewer is DROPPED, never a 15s controller block) so rc retake gets through. Control ONLY for sessions the daemon brain genuinely DRIVES (empty set today → all become Viewer; forward-correct for the live-agent-adapter future). SECONDARY (escalation, ONLY if the gate shows residual B): stagger the resume re-attach + bound the viewer replay so the respawn burst can't saturate the conn. Int = the multi-broker-PTY-session RESPAWN rig (the coverage the A'-rig lacked): N real broker-spawned sessions with controllers producing output → real brain respawn/promote → assert (1) EVERY session keeps its controller across the swap (no stall-evict of a session the brain doesn't drive), (2) `spt rc` attaches/retakes IMMEDIATELY post-promote (no shared-conn saturation), (3) promotion still succeeds. RED-first: the current Control re-attach steals+evicts + deadlines rc. Composes with REQ-UPDATE-TRIAL-DRAIN-DRIVE (the orthogonal counter-54 promote fix), REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE (the stall-evict it stops mis-firing on non-driven sessions), REQ-BROKER-ATTACH-JOURNAL-RESILIENT (the #16 shared-conn resilience). Distinct from REQ-BRAIN-UPDATE-RESTART-CLEAN-CLOSE (that = the OLD brain's outgoing black-hole; this = the NEW brain's resume-steal).",
2026-07-26T22:33:02.8040170Z       "requiredStages": [
2026-07-26T22:33:02.8040280Z         "doc",
2026-07-26T22:33:02.8040376Z         "impl",
2026-07-26T22:33:02.8040475Z         "int"
2026-07-26T22:33:02.8040571Z       ],
2026-07-26T22:33:02.8040671Z       "stages": {
2026-07-26T22:33:02.8040765Z         "doc": {
2026-07-26T22:33:02.8040886Z           "complete": true,
2026-07-26T22:33:02.8040990Z           "evidence": [
2026-07-26T22:33:02.8041090Z             {
2026-07-26T22:33:02.8041210Z               "path": "CONTEXT.md",
2026-07-26T22:33:02.8041314Z               "line": 613
2026-07-26T22:33:02.8041414Z             },
2026-07-26T22:33:02.8041511Z             {
2026-07-26T22:33:02.8041657Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.8041782Z               "line": 1206
2026-07-26T22:33:02.8041883Z             },
2026-07-26T22:33:02.8041986Z             {
2026-07-26T22:33:02.8042123Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.8042238Z               "line": 1892
2026-07-26T22:33:02.8042336Z             }
2026-07-26T22:33:02.8042436Z           ]
2026-07-26T22:33:02.8042537Z         },
2026-07-26T22:33:02.8042636Z         "impl": {
2026-07-26T22:33:02.8042741Z           "complete": true,
2026-07-26T22:33:02.8042856Z           "evidence": [
2026-07-26T22:33:02.8042956Z             {
2026-07-26T22:33:02.8043099Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.8043243Z               "line": 1216
2026-07-26T22:33:02.8043352Z             },
2026-07-26T22:33:02.8043448Z             {
2026-07-26T22:33:02.8043586Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.8043695Z               "line": 1238
2026-07-26T22:33:02.8043796Z             }
2026-07-26T22:33:02.8043905Z           ]
2026-07-26T22:33:02.8044005Z         },
2026-07-26T22:33:02.8044107Z         "int": {
2026-07-26T22:33:02.8044296Z           "complete": true,
2026-07-26T22:33:02.8044412Z           "evidence": [
2026-07-26T22:33:02.8044511Z             {
2026-07-26T22:33:02.8044683Z               "path": "crates/spt/tests/resume_no_control_steal_e2e.rs",
2026-07-26T22:33:02.8044788Z               "line": 336
2026-07-26T22:33:02.8044892Z             },
2026-07-26T22:33:02.8044991Z             {
2026-07-26T22:33:02.8045166Z               "path": "crates/spt/tests/resume_no_control_steal_e2e.rs",
2026-07-26T22:33:02.8045274Z               "line": 486
2026-07-26T22:33:02.8045380Z             },
2026-07-26T22:33:02.8045480Z             {
2026-07-26T22:33:02.8045647Z               "path": "crates/spt/tests/resume_no_control_steal_e2e.rs",
2026-07-26T22:33:02.8045752Z               "line": 504
2026-07-26T22:33:02.8045861Z             }
2026-07-26T22:33:02.8045961Z           ]
2026-07-26T22:33:02.8046138Z         },
2026-07-26T22:33:02.8046242Z         "unit": {
2026-07-26T22:33:02.8046367Z           "complete": false,
2026-07-26T22:33:02.8046481Z           "evidence": []
2026-07-26T22:33:02.8046591Z         }
2026-07-26T22:33:02.8046687Z       }
2026-07-26T22:33:02.8046786Z     },
2026-07-26T22:33:02.8046886Z     {
2026-07-26T22:33:02.8047050Z       "id": "REQ-BRAIN-UPDATE-RESTART-CLEAN-CLOSE",
2026-07-26T22:33:02.8053349Z       "title": "SEED (DEFERRED, doyle 2026-07-09 — post-counter-54 root-hardening for UPDATE-WEDGE; mint now, impl a FUTURE milestone): on a PLANNED brain-restart (`BRAIN_UPDATE_RESTART`, the seamless update-apply brain-cycle), the outgoing brain's LOCAL (by:None) controller conns are GRACEFULLY CLEAN-CLOSED as the brain is cycled, instead of hard-killed and left to black-hole. ROOT (field-pinned 2026-07-09, daemon.stderr.log L24277-24303): the update-restart path hard-kills the outgoing brain (`child.kill()`, brainproc.rs:851); its live-agent controller conns then block on dead pipes (never EOF) → the broker reads them WEDGED (broker.rs:2695-2700) → the new candidate's promotion DRAINED gate (`any_local_controller_wedged`, broker.rs:2704) stays true until the W2 stall-evict matures (~15s). REQ-UPDATE-TRIAL-DRAIN-DRIVE (counter-54) makes the candidate DRIVE that reap so it promotes within the 30s window — but at a ~15s wedge-maturity hitch (frozen PTYs during the swap). A CLEAN close makes the conn 'simply absent → drained=false AT ONCE → fast promote' (broker.rs:2699-2700), ELIMINATING the hitch = truly seamless (honors the paradigm the field freeze broke). SUPERSEDES the earlier livehost-reattach framing of 'Fix Y': livehost is SPAWN-FRESH (fresh session uuid/pid per boot, nothing to re-attach — wrong site, and it never ran in the trial window); the correct site is the brain-cycle / update-restart path (a bounded graceful-drain of the outgoing brain BEFORE the kill). Non-trivial: hard-kill → bounded graceful drain; a drain that hangs must NOT wedge the swap (timeout then kill anyway, never block the update). Composes with REQ-UPDATE-TRIAL-DRAIN-DRIVE (defense-in-depth reap-drive REMAINS for any conn that still black-holes — a peer/relay conn, a drain-timeout kill) + REQ-UPDATE-PROMOTE-DRAINED (the gate) + REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE (the stall-evict). Int: a planned update-restart under a live-agent controller conn → the new candidate promotes WITHOUT waiting the ~15s wedge-maturity (drained reads false immediately, no STALL_EVICT), RED-first vs the current hard-kill-then-reap-drive ~15s hitch.",
2026-07-26T22:33:02.8053597Z       "requiredStages": [],
2026-07-26T22:33:02.8053693Z       "stages": {
2026-07-26T22:33:02.8053803Z         "doc": {
2026-07-26T22:33:02.8053916Z           "complete": false,
2026-07-26T22:33:02.8054032Z           "evidence": []
2026-07-26T22:33:02.8054127Z         },
2026-07-26T22:33:02.8054231Z         "impl": {
2026-07-26T22:33:02.8054342Z           "complete": false,
2026-07-26T22:33:02.8054465Z           "evidence": []
2026-07-26T22:33:02.8054584Z         },
2026-07-26T22:33:02.8054686Z         "int": {
2026-07-26T22:33:02.8054803Z           "complete": false,
2026-07-26T22:33:02.8054913Z           "evidence": []
2026-07-26T22:33:02.8055132Z         },
2026-07-26T22:33:02.8055233Z         "unit": {
2026-07-26T22:33:02.8055348Z           "complete": false,
2026-07-26T22:33:02.8055452Z           "evidence": []
2026-07-26T22:33:02.8055560Z         }
2026-07-26T22:33:02.8055661Z       }
2026-07-26T22:33:02.8055763Z     },
2026-07-26T22:33:02.8055863Z     {
2026-07-26T22:33:02.8056007Z       "id": "REQ-BROKER-ATTACH-JOURNAL-RESILIENT",
2026-07-26T22:33:02.8058754Z       "title": "A poisoned EffectJournal mutex or a sick NetHost runtime must NOT permanently brick all future attaches. Bug #16 (URGENT): a live spt-hosted endpoint (eel-a) attach fails with 'brain IPC read deadline elapsed' after a self-update brain-respawn — the broker survives the respawn and one journaled op (dispatch_net_stream_open journal.apply_once + loopback open_stream runtime.block_on nethost.rs:1060) enters a bad state, so every journaled attach silently kills its per-conn reply thread while non-journaled ops keep working. Fix: recover PoisonError via into_inner (effect.rs apply_once, replace the .expect panics) so one panic cannot brick all attaches; bound the loopback open_stream block_on (nethost.rs:1060) like the QUIC bounded_block_on so a sick runtime fails fast with an error frame not an opaque 10s deadline. Reinforces REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE. See docs/NEXT-MILESTONE-BUG-TRIAGE.md #16.",
2026-07-26T22:33:02.8059093Z       "requiredStages": [
2026-07-26T22:33:02.8059198Z         "impl",
2026-07-26T22:33:02.8059294Z         "unit"
2026-07-26T22:33:02.8059398Z       ],
2026-07-26T22:33:02.8059499Z       "stages": {
2026-07-26T22:33:02.8059603Z         "doc": {
2026-07-26T22:33:02.8059718Z           "complete": false,
2026-07-26T22:33:02.8059824Z           "evidence": []
2026-07-26T22:33:02.8059918Z         },
2026-07-26T22:33:02.8060023Z         "impl": {
2026-07-26T22:33:02.8060143Z           "complete": true,
2026-07-26T22:33:02.8060256Z           "evidence": [
2026-07-26T22:33:02.8060357Z             {
2026-07-26T22:33:02.8060524Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:02.8060624Z               "line": 379
2026-07-26T22:33:02.8060725Z             },
2026-07-26T22:33:02.8060825Z             {
2026-07-26T22:33:02.8060975Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.8061076Z               "line": 1752
2026-07-26T22:33:02.8061177Z             }
2026-07-26T22:33:02.8061275Z           ]
2026-07-26T22:33:02.8061376Z         },
2026-07-26T22:33:02.8061471Z         "int": {
2026-07-26T22:33:02.8061590Z           "complete": false,
2026-07-26T22:33:02.8061691Z           "evidence": []
2026-07-26T22:33:02.8061791Z         },
2026-07-26T22:33:02.8061895Z         "unit": {
2026-07-26T22:33:02.8062016Z           "complete": true,
2026-07-26T22:33:02.8062115Z           "evidence": [
2026-07-26T22:33:02.8062215Z             {
2026-07-26T22:33:02.8062364Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:02.8062482Z               "line": 689
2026-07-26T22:33:02.8062577Z             }
2026-07-26T22:33:02.8062674Z           ]
2026-07-26T22:33:02.8062773Z         }
2026-07-26T22:33:02.8062873Z       }
2026-07-26T22:33:02.8062970Z     },
2026-07-26T22:33:02.8063069Z     {
2026-07-26T22:33:02.8063211Z       "id": "REQ-BROKER-OUTPUT-BEFORE-EXIT",
2026-07-26T22:33:02.8065899Z       "title": "RC-RENDER-TRUTH W3 (ADR-0043 decision 1, hertz stale-glyphs RCA leg 1 P0): the PTY drain/output writer is the SOLE FIFO sequencer for terminal Output + Exit per attach sink — Exit is enqueued BEHIND all prior output (drain EOF/completion first, then Exit); the exit waiter never direct-writes KIND_EXIT around the queued output path (a mutex serializes bytes, not producer order). Kills the stranded-final-frame race (final EL/SGR-reset/cursor-show/?1049l lost when Exit overtakes Output — already admitted and compensated in the broker test suite, never fixed in production rc). Gate: impl — single sequencer, exit-behind-output enqueue; unit — ordering invariant on the writer queue (exit never precedes queued output for a sink); int — short-lived child emits 'XXXX ESC[2K ESC[?25h ESC[?1049l' then exits => that exact Output precedes Exit through the PRODUCTION broker->attach->rc path; doc — ADR-0043.",
2026-07-26T22:33:02.8066188Z       "requiredStages": [
2026-07-26T22:33:02.8066286Z         "doc",
2026-07-26T22:33:02.8066385Z         "impl",
2026-07-26T22:33:02.8066485Z         "unit",
2026-07-26T22:33:02.8066596Z         "int"
2026-07-26T22:33:02.8066690Z       ],
2026-07-26T22:33:02.8066791Z       "stages": {
2026-07-26T22:33:02.8066892Z         "doc": {
2026-07-26T22:33:02.8067010Z           "complete": true,
2026-07-26T22:33:02.8067120Z           "evidence": [
2026-07-26T22:33:02.8067225Z             {
2026-07-26T22:33:02.8067391Z               "path": "docs/adr/0043-terminal-render-lifecycle.md",
2026-07-26T22:33:02.8067630Z               "line": 45
2026-07-26T22:33:02.8067730Z             }
2026-07-26T22:33:02.8067831Z           ]
2026-07-26T22:33:02.8067925Z         },
2026-07-26T22:33:02.8068060Z         "impl": {
2026-07-26T22:33:02.8068174Z           "complete": true,
2026-07-26T22:33:02.8068283Z           "evidence": [
2026-07-26T22:33:02.8068380Z             {
2026-07-26T22:33:02.8068527Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8068630Z               "line": 2322
2026-07-26T22:33:02.8072479Z             },
2026-07-26T22:33:02.8072609Z             {
2026-07-26T22:33:02.8072771Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8072886Z               "line": 2455
2026-07-26T22:33:02.8072991Z             },
2026-07-26T22:33:02.8073090Z             {
2026-07-26T22:33:02.8073244Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8073361Z               "line": 2469
2026-07-26T22:33:02.8073472Z             },
2026-07-26T22:33:02.8073578Z             {
2026-07-26T22:33:02.8073718Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8073833Z               "line": 2649
2026-07-26T22:33:02.8073947Z             },
2026-07-26T22:33:02.8074045Z             {
2026-07-26T22:33:02.8074193Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8074304Z               "line": 4797
2026-07-26T22:33:02.8074407Z             }
2026-07-26T22:33:02.8074512Z           ]
2026-07-26T22:33:02.8074613Z         },
2026-07-26T22:33:02.8074712Z         "int": {
2026-07-26T22:33:02.8074833Z           "complete": true,
2026-07-26T22:33:02.8074942Z           "evidence": [
2026-07-26T22:33:02.8075046Z             {
2026-07-26T22:33:02.8075218Z               "path": "crates/spt-daemon/tests/render_lifecycle.rs",
2026-07-26T22:33:02.8075327Z               "line": 76
2026-07-26T22:33:02.8075423Z             }
2026-07-26T22:33:02.8075529Z           ]
2026-07-26T22:33:02.8075628Z         },
2026-07-26T22:33:02.8075728Z         "unit": {
2026-07-26T22:33:02.8075853Z           "complete": true,
2026-07-26T22:33:02.8075957Z           "evidence": [
2026-07-26T22:33:02.8076058Z             {
2026-07-26T22:33:02.8076210Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8076329Z               "line": 6577
2026-07-26T22:33:02.8076416Z             }
2026-07-26T22:33:02.8076525Z           ]
2026-07-26T22:33:02.8076619Z         }
2026-07-26T22:33:02.8076724Z       }
2026-07-26T22:33:02.8076819Z     },
2026-07-26T22:33:02.8076917Z     {
2026-07-26T22:33:02.8077046Z       "id": "REQ-BROKER-SCREEN-GRID",
2026-07-26T22:33:02.8079789Z       "title": "Bugs #6 + #12 + #7/#8-artifacts: the broker is a raw-byte pump with no screen model — OutputLog replays the raw ring from seq 0 into a fresh terminal on attach, so an alt-screen TUI (Claude Code) corrupts scrollback (#6) and rc-to-a-pre-running-endpoint garbles (#12 — rc and endpoint run --attach are the SAME client fn, so it is replay content not a client-VT bug). Fix: a server-side VT/grid/screen model (tmux/mosh-style) that maintains authoritative screen + alt/main + cursor and synthesizes a CLEAN current-screen repaint on attach instead of replaying mid-stream ring bytes. Also eliminates residual-cell artifacts on animate/scroll/resize (#7/#8). Operator NON-NEGOTIABLE: accurate PTY representation with zero artifacts. (win32 vterm in the report means this server-side emulator, not ConPTY which is already the backend.) See docs/NEXT-MILESTONE-BUG-TRIAGE.md #6/#12.",
2026-07-26T22:33:02.8080099Z       "requiredStages": [
2026-07-26T22:33:02.8080203Z         "doc",
2026-07-26T22:33:02.8080309Z         "impl",
2026-07-26T22:33:02.8080404Z         "unit",
2026-07-26T22:33:02.8080508Z         "int"
2026-07-26T22:33:02.8080605Z       ],
2026-07-26T22:33:02.8080709Z       "stages": {
2026-07-26T22:33:02.8080809Z         "doc": {
2026-07-26T22:33:02.8080929Z           "complete": true,
2026-07-26T22:33:02.8081038Z           "evidence": [
2026-07-26T22:33:02.8081133Z             {
2026-07-26T22:33:02.8081439Z               "path": "docs/adr/0031-server-side-screen-grid-render-repaint.md",
2026-07-26T22:33:02.8081540Z               "line": 17
2026-07-26T22:33:02.8081653Z             }
2026-07-26T22:33:02.8081759Z           ]
2026-07-26T22:33:02.8081860Z         },
2026-07-26T22:33:02.8081987Z         "impl": {
2026-07-26T22:33:02.8082100Z           "complete": true,
2026-07-26T22:33:02.8082215Z           "evidence": [
2026-07-26T22:33:02.8082316Z             {
2026-07-26T22:33:02.8082467Z               "path": "crates/spt-term/src/lib.rs",
2026-07-26T22:33:02.8082588Z               "line": 56
2026-07-26T22:33:02.8082692Z             },
2026-07-26T22:33:02.8082792Z             {
2026-07-26T22:33:02.8082930Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:02.8083049Z               "line": 323
2026-07-26T22:33:02.8083150Z             },
2026-07-26T22:33:02.8083250Z             {
2026-07-26T22:33:02.8083388Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:02.8083508Z               "line": 945
2026-07-26T22:33:02.8083602Z             },
2026-07-26T22:33:02.8083707Z             {
2026-07-26T22:33:02.8083851Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:02.8083960Z               "line": 1245
2026-07-26T22:33:02.8084056Z             }
2026-07-26T22:33:02.8084143Z           ]
2026-07-26T22:33:02.8084241Z         },
2026-07-26T22:33:02.8084341Z         "int": {
2026-07-26T22:33:02.8084455Z           "complete": true,
2026-07-26T22:33:02.8084568Z           "evidence": [
2026-07-26T22:33:02.8084657Z             {
2026-07-26T22:33:02.8084797Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8084910Z               "line": 8452
2026-07-26T22:33:02.8085015Z             },
2026-07-26T22:33:02.8085112Z             {
2026-07-26T22:33:02.8085263Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:02.8085359Z               "line": 590
2026-07-26T22:33:02.8085464Z             }
2026-07-26T22:33:02.8085568Z           ]
2026-07-26T22:33:02.8085674Z         },
2026-07-26T22:33:02.8085779Z         "unit": {
2026-07-26T22:33:02.8085888Z           "complete": true,
2026-07-26T22:33:02.8086008Z           "evidence": [
2026-07-26T22:33:02.8086112Z             {
2026-07-26T22:33:02.8086250Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8086371Z               "line": 8086
2026-07-26T22:33:02.8086469Z             },
2026-07-26T22:33:02.8086569Z             {
2026-07-26T22:33:02.8086709Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:02.8086822Z               "line": 1380
2026-07-26T22:33:02.8086923Z             },
2026-07-26T22:33:02.8087024Z             {
2026-07-26T22:33:02.8087160Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:02.8087279Z               "line": 1394
2026-07-26T22:33:02.8087374Z             },
2026-07-26T22:33:02.8087467Z             {
2026-07-26T22:33:02.8087601Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:02.8087721Z               "line": 1416
2026-07-26T22:33:02.8087825Z             },
2026-07-26T22:33:02.8087926Z             {
2026-07-26T22:33:02.8088149Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:02.8088265Z               "line": 1435
2026-07-26T22:33:02.8088359Z             },
2026-07-26T22:33:02.8088454Z             {
2026-07-26T22:33:02.8088594Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:02.8088707Z               "line": 1448
2026-07-26T22:33:02.8088812Z             },
2026-07-26T22:33:02.8088909Z             {
2026-07-26T22:33:02.8089137Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:02.8089247Z               "line": 1472
2026-07-26T22:33:02.8089346Z             },
2026-07-26T22:33:02.8089447Z             {
2026-07-26T22:33:02.8089586Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:02.8089694Z               "line": 1482
2026-07-26T22:33:02.8089802Z             },
2026-07-26T22:33:02.8089996Z             {
2026-07-26T22:33:02.8090124Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:02.8090245Z               "line": 1493
2026-07-26T22:33:02.8090349Z             },
2026-07-26T22:33:02.8090449Z             {
2026-07-26T22:33:02.8090593Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:02.8090692Z               "line": 1504
2026-07-26T22:33:02.8090793Z             },
2026-07-26T22:33:02.8090888Z             {
2026-07-26T22:33:02.8091026Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:02.8091137Z               "line": 1514
2026-07-26T22:33:02.8091236Z             },
2026-07-26T22:33:02.8091331Z             {
2026-07-26T22:33:02.8091471Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:02.8091570Z               "line": 1522
2026-07-26T22:33:02.8091703Z             }
2026-07-26T22:33:02.8091809Z           ]
2026-07-26T22:33:02.8091908Z         }
2026-07-26T22:33:02.8092004Z       }
2026-07-26T22:33:02.8092105Z     },
2026-07-26T22:33:02.8092190Z     {
2026-07-26T22:33:02.8092319Z       "id": "REQ-CARRIER-CLAIM-EXCLUSIVE",
2026-07-26T22:33:02.8096955Z       "title": "MSG-IDENTITY W4 / F-033 + operator self-send probe 2026-07-09 (dup-delivery cluster, RCA-FIRST): a spooled message row is delivered by EXACTLY ONE carrier — the first carrier to take a row (hook-poll drain, relay idle-inject, relay-backlog, psyche) atomically CLAIMS it so no other carrier can re-deliver the same row. FIELD EVIDENCE (authoritative, operator-observed): a default-window doyle-to-doyle send while doyle was BUSY delivered on BOTH the busy POLL path AND the idle RELAY path; spool row 156: window='default', delivered=1, taken_leg='idle-inject' — the relay claimed a row a poll also surfaced (REQ-SPOOL-TAKE-AUDIT instrument, already shipped, is the RCA tool: taken_leg/taken_sid/taken_at per row). PRIOR: F-033 (perri 2026-07-08) — the psyche-download filing arrived as TWO copies, dup-delivery live-confirmed. RCA-FIRST (report-before-fix): pin whether the poll drains before/after the relay's delivered=1 mark; whether the busy-to-idle edge re-offers a row a poll already took; whether take-marking is atomic per carrier or check-then-mark racy. DISTINCT from F-035 (that = active_only window honor, spt-core exonerated; THIS = a default msg on both carriers — F-035's lock never asserted a default msg can't ride both). Gate: int — a default send to a BUSY live agent that polls mid-turn AND transitions idle delivers EXACTLY ONCE (spool-audit shows one taken_leg, recipient sees one copy); unit — concurrent take attempts on one row yield one winner. Kin REQ-SPOOL-TAKE-AUDIT, REQ-RELAY-NO-BUSY-DELIVER, REQ-IDLE-PARKED-DELIVERY, [[spt-core-findings-backlog]].",
2026-07-26T22:33:02.8097164Z       "requiredStages": [
2026-07-26T22:33:02.8097264Z         "impl",
2026-07-26T22:33:02.8097368Z         "unit",
2026-07-26T22:33:02.8097469Z         "int"
2026-07-26T22:33:02.8097575Z       ],
2026-07-26T22:33:02.8097673Z       "stages": {
2026-07-26T22:33:02.8097796Z         "doc": {
2026-07-26T22:33:02.8097902Z           "complete": false,
2026-07-26T22:33:02.8098018Z           "evidence": []
2026-07-26T22:33:02.8098243Z         },
2026-07-26T22:33:02.8098352Z         "impl": {
2026-07-26T22:33:02.8098466Z           "complete": true,
2026-07-26T22:33:02.8098567Z           "evidence": [
2026-07-26T22:33:02.8098667Z             {
2026-07-26T22:33:02.8098806Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.8098905Z               "line": 494
2026-07-26T22:33:02.8099086Z             },
2026-07-26T22:33:02.8099187Z             {
2026-07-26T22:33:02.8099329Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.8099440Z               "line": 531
2026-07-26T22:33:02.8099540Z             },
2026-07-26T22:33:02.8099639Z             {
2026-07-26T22:33:02.8099779Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.8099883Z               "line": 581
2026-07-26T22:33:02.8099983Z             },
2026-07-26T22:33:02.8100179Z             {
2026-07-26T22:33:02.8100316Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.8100430Z               "line": 676
2026-07-26T22:33:02.8100529Z             },
2026-07-26T22:33:02.8100623Z             {
2026-07-26T22:33:02.8100752Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.8100858Z               "line": 710
2026-07-26T22:33:02.8100952Z             }
2026-07-26T22:33:02.8101052Z           ]
2026-07-26T22:33:02.8101153Z         },
2026-07-26T22:33:02.8101252Z         "int": {
2026-07-26T22:33:02.8101367Z           "complete": true,
2026-07-26T22:33:02.8101472Z           "evidence": [
2026-07-26T22:33:02.8101571Z             {
2026-07-26T22:33:02.8101740Z               "path": "crates/spt-store/tests/carrier_claim_int.rs",
2026-07-26T22:33:02.8101839Z               "line": 1
2026-07-26T22:33:02.8101939Z             },
2026-07-26T22:33:02.8102041Z             {
2026-07-26T22:33:02.8102197Z               "path": "crates/spt-store/tests/carrier_claim_int.rs",
2026-07-26T22:33:02.8102307Z               "line": 71
2026-07-26T22:33:02.8102402Z             }
2026-07-26T22:33:02.8102502Z           ]
2026-07-26T22:33:02.8102602Z         },
2026-07-26T22:33:02.8102699Z         "unit": {
2026-07-26T22:33:02.8102806Z           "complete": true,
2026-07-26T22:33:02.8102912Z           "evidence": [
2026-07-26T22:33:02.8103018Z             {
2026-07-26T22:33:02.8103154Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.8103268Z               "line": 1378
2026-07-26T22:33:02.8103369Z             },
2026-07-26T22:33:02.8103474Z             {
2026-07-26T22:33:02.8103597Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.8103703Z               "line": 1448
2026-07-26T22:33:02.8103807Z             }
2026-07-26T22:33:02.8103903Z           ]
2026-07-26T22:33:02.8104003Z         }
2026-07-26T22:33:02.8104098Z       }
2026-07-26T22:33:02.8104198Z     },
2026-07-26T22:33:02.8104294Z     {
2026-07-26T22:33:02.8104418Z       "id": "REQ-CI-DOCS-ONLY-THIN",
2026-07-26T22:33:02.8106851Z       "title": "CI (operator-ruled 2026-07-16, from PR #8 review): a PR whose ENTIRE diff is Markdown OUTSIDE docs-site/ runs THIN CI — the heavy build/test jobs (test, n1-gate) are skipped via a changed-files classifier job. Invariants: the traceability gate ALWAYS runs (doc tags in .md files are load-bearing evidence, and a run with zero checks is unmergeable); any docs-site/ change runs the FULL pipeline (the CLI-ref/llms/book drift gates ride the test job); push events (main) always run full. The classifier is plain git diff over the PR merge commit (HEAD^1..HEAD, fetch-depth 2) — no third-party changed-files action on the self-hosted runners. Skipped-required-check note: GitHub treats an if-skipped job as satisfying required status checks, and the classifier + traceability always report, so thin PRs stay mergeable.",
2026-07-26T22:33:02.8107004Z       "requiredStages": [
2026-07-26T22:33:02.8107099Z         "impl"
2026-07-26T22:33:02.8107218Z       ],
2026-07-26T22:33:02.8107323Z       "stages": {
2026-07-26T22:33:02.8107428Z         "doc": {
2026-07-26T22:33:02.8107675Z           "complete": false,
2026-07-26T22:33:02.8107791Z           "evidence": []
2026-07-26T22:33:02.8107886Z         },
2026-07-26T22:33:02.8107986Z         "impl": {
2026-07-26T22:33:02.8108092Z           "complete": true,
2026-07-26T22:33:02.8108210Z           "evidence": [
2026-07-26T22:33:02.8108304Z             {
2026-07-26T22:33:02.8108447Z               "path": ".github/workflows/ci.yml",
2026-07-26T22:33:02.8108546Z               "line": 25
2026-07-26T22:33:02.8108649Z             }
2026-07-26T22:33:02.8108745Z           ]
2026-07-26T22:33:02.8108846Z         },
2026-07-26T22:33:02.8109012Z         "int": {
2026-07-26T22:33:02.8109132Z           "complete": false,
2026-07-26T22:33:02.8109241Z           "evidence": []
2026-07-26T22:33:02.8109346Z         },
2026-07-26T22:33:02.8109447Z         "unit": {
2026-07-26T22:33:02.8109570Z           "complete": false,
2026-07-26T22:33:02.8109781Z           "evidence": []
2026-07-26T22:33:02.8109880Z         }
2026-07-26T22:33:02.8109975Z       }
2026-07-26T22:33:02.8110086Z     },
2026-07-26T22:33:02.8110180Z     {
2026-07-26T22:33:02.8110315Z       "id": "REQ-CI-POSTJOB-DAEMON-REAP",
2026-07-26T22:33:02.8118803Z       "title": "A CI job REAPS ITS OWN test-spawned daemons at battery end, in-job, and logs a process census at job start AND job end so contamination and reap effectiveness are visible in every run's log. (Load-flake family leg 1, doyle-ratified 2026-07-22 from deployah's third-run analysis.) THE SIGNATURE THIS CLOSES: a DIFFERENT single daemon-spawning test dying per run with a bare exit 1 and NO assertion output — process-level death, not a failed assert — while sibling tests in the same families pass alongside it, on BYTE-IDENTICAL code. Evidence: release PR #56 ran four times over a zero-.rs-delta tree; runs 1/2/3 killed brain_decouple (twice, on a disk-starved box), then adapter_translate, then adapter_digest at 105.9 GB free; box census during runs showed 43 live spt-family processes and 6486 handles against an 1881-test Phase-A full-parallel battery; run 4 went GREEN once disk and leaked session-0 daemons were cleared. WHY IN-JOB IS LOAD-BEARING AND NOT A CONVENIENCE: there are TWO leak populations on hfenduleam. Population A is session-1 (agent/gate-spawned) and is sweepable by path from any shell. Population B is SESSION-0, spawned by the actions.runner.* service — a session-1 shell CANNOT kill those (Access denied; ExecutablePath unreadable) even though they are healthy. Every CI run therefore leaves session-0 daemons behind that contend with the NEXT run while also leaking its own mid-run, and an external sweep can never reach them. The runner's own job context owns its session-0 children, so only a post-job step inside the job can reap them. KILL SCOPE IS NARROW AND PATH-VERIFIED PER-PID AT KILL TIME (never machine-wide, and never trusting the census snapshot, whose pids can be recycled): eligible only under the run's own build roots — CARGO_TARGET_DIR, the workspace target, the notify-adapter checkout's target, RUNNER_TEMP, and the pinned n1 old-broker build cache. TWO HARD EXCLUSIONS are checked AFTER the root test rather than instead of it, so that live infra survives a bug in the root computation: anything under an spt-core/bin/ install prefix, and any owl binary. A process whose image path cannot be READ is reported but NEVER killed — unreadable means unverifiable and the safe direction is to leave it standing. A BOUNDED SETTLE precedes the kill pass so a cleanly-exiting daemon is not counted as a leak; after it, a survivor is a leak by definition, which is what makes the strict-mode trigger a mechanism rather than a judgement call. Rides BOTH the test and n1-gate jobs (doyle scope ruling): n1_pairing spawns real daemon trees from the workspace and from the out-of-tree pin cache, so reaping one job leaves half the cause standing. Gate: impl — the two census/reap scripts under .github/ci/ plus their job-start and always() job-end wiring on both jobs, both runners. Kin REQ-CI-WINDOWS-PHASE-A-BOUND (the other cause-side leg), REQ-CI-DOCS-ONLY-THIN (recipe-layer precedent: impl-only, no product code).",
2026-07-26T22:33:02.8119291Z       "requiredStages": [
2026-07-26T22:33:02.8119392Z         "impl"
2026-07-26T22:33:02.8119482Z       ],
2026-07-26T22:33:02.8119581Z       "stages": {
2026-07-26T22:33:02.8119683Z         "doc": {
2026-07-26T22:33:02.8119806Z           "complete": false,
2026-07-26T22:33:02.8119911Z           "evidence": []
2026-07-26T22:33:02.8120012Z         },
2026-07-26T22:33:02.8120111Z         "impl": {
2026-07-26T22:33:02.8120221Z           "complete": true,
2026-07-26T22:33:02.8120322Z           "evidence": [
2026-07-26T22:33:02.8120426Z             {
2026-07-26T22:33:02.8120570Z               "path": ".github/ci/reap-census.sh",
2026-07-26T22:33:02.8120679Z               "line": 42
2026-07-26T22:33:02.8120774Z             },
2026-07-26T22:33:02.8120875Z             {
2026-07-26T22:33:02.8121112Z               "path": ".github/workflows/ci.yml",
2026-07-26T22:33:02.8121223Z               "line": 347
2026-07-26T22:33:02.8121337Z             },
2026-07-26T22:33:02.8121436Z             {
2026-07-26T22:33:02.8121569Z               "path": ".github/workflows/ci.yml",
2026-07-26T22:33:02.8121677Z               "line": 472
2026-07-26T22:33:02.8121772Z             }
2026-07-26T22:33:02.8121872Z           ]
2026-07-26T22:33:02.8121978Z         },
2026-07-26T22:33:02.8122072Z         "int": {
2026-07-26T22:33:02.8122182Z           "complete": false,
2026-07-26T22:33:02.8122297Z           "evidence": []
2026-07-26T22:33:02.8122401Z         },
2026-07-26T22:33:02.8122502Z         "unit": {
2026-07-26T22:33:02.8122616Z           "complete": false,
2026-07-26T22:33:02.8122715Z           "evidence": []
2026-07-26T22:33:02.8122817Z         }
2026-07-26T22:33:02.8122912Z       }
2026-07-26T22:33:02.8122997Z     },
2026-07-26T22:33:02.8123097Z     {
2026-07-26T22:33:02.8123231Z       "id": "REQ-CI-WINDOWS-PHASE-A-BOUND",
2026-07-26T22:33:02.8132308Z       "title": "Phase-A nextest parallelism is BOUNDED on the Windows self-hosted leg, so the full-parallel 1881-test battery stops saturating a box that also hosts the live agent fleet. (Load-flake family leg 2 = deployah option (c), doyle-ratified 2026-07-22.) Windows leg ONLY: kitsubito does not host the fleet, and its parallelism is deliberately untouched. MECHANISM AND WHY THIS ONE: the bound lives in a [profile.ci-windows] nextest profile selected by a STEP-LEVEL NEXTEST_PROFILE expression on the Phase-A step, NOT by a per-OS pair of Phase-A steps — duplicating that step would put a FOURTH copy of the <HEAVY> filter string in the tree, and .config/nextest.toml's own header names keeping THREE in sync as the standing hazard. THE NON-INHERITANCE GATE-CHECK (doyle demanded it discharged, and it did not come back clean): a custom nextest profile inherits scalar settings from default but NOT profile.default.overrides — the argument cuts both ways. Of the five overrides on default, exactly ONE is kind(test): the by-binary <HEAVY> integration filter, which is Phase B's alone and needs no mirror. The other FOUR are the FLAKE-LEDGER #14 class — real-broker units that are kind(bin)/kind(lib), escape the by-binary filter, and therefore RUN IN PHASE A depending on the heavy-broker-pty group to stay serialized (rc::tests four names, (applyhost|livehost|pump)::tests, wansend::tests, api::startup::tests). Shipping the profile without them would have SILENTLY UN-SERIALIZED ON WINDOWS the exact class whose un-serialization produced two separate 240s timeouts. They are mirrored verbatim, and the parity is ENFORCED rather than remembered: xtask check's check_phase_a_profile_parity fails the build when a default override that is not kind(test) is missing from ci-windows, keyed on that SHAPE and not on a name list — the same posture as FLAKE-LEDGER #14's second half, whose whole lesson is that a class written in prose and shipped as an enumeration decays. A DRIFTED mirror reads as missing, not as present: the invariant is that it is the SAME filter in both profiles, not that something is in both. THE BOUND ITSELF IS CHOSEN, NOT DERIVED, and is recorded that way at the value: hfenduleam is 16 logical cores and the bound is 8 (half), for fleet-co-tenant headroom. No measurement separates 8 from 6 or 12 and none was run — the ratified fix is stop saturating the box, not find the saturation knee. Retuning is one integer. Gate: impl — the ci-windows profile with its mirrored overrides plus the ci.yml step-level profile selection plus the xtask parity check; unit — the parity predicate's exemption rule (a kind(test) override needs no mirror), its detection of an unmirrored Phase-A override, its rejection of a DRIFTED mirror, and a case over the REAL checked-in config so the check cannot ship green against a tree that already violates it. Kin REQ-CI-POSTJOB-DAEMON-REAP (the other cause-side leg), REQ-HEAVY-UNIT-CLASSIFICATION (the check one layer in), FLAKE-LEDGER #14/#15.",
2026-07-26T22:33:02.8132752Z       "requiredStages": [
2026-07-26T22:33:02.8132852Z         "impl",
2026-07-26T22:33:02.8132951Z         "unit"
2026-07-26T22:33:02.8133072Z       ],
2026-07-26T22:33:02.8133181Z       "stages": {
2026-07-26T22:33:02.8133280Z         "doc": {
2026-07-26T22:33:02.8133401Z           "complete": false,
2026-07-26T22:33:02.8133505Z           "evidence": []
2026-07-26T22:33:02.8133605Z         },
2026-07-26T22:33:02.8133706Z         "impl": {
2026-07-26T22:33:02.8133824Z           "complete": true,
2026-07-26T22:33:02.8133924Z           "evidence": [
2026-07-26T22:33:02.8134021Z             {
2026-07-26T22:33:02.8134158Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:02.8134263Z               "line": 371
2026-07-26T22:33:02.8134355Z             },
2026-07-26T22:33:02.8134459Z             {
2026-07-26T22:33:02.8134578Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:02.8134689Z               "line": 396
2026-07-26T22:33:02.8134792Z             },
2026-07-26T22:33:02.8134896Z             {
2026-07-26T22:33:02.8135016Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:02.8135121Z               "line": 409
2026-07-26T22:33:02.8135220Z             }
2026-07-26T22:33:02.8135321Z           ]
2026-07-26T22:33:02.8135427Z         },
2026-07-26T22:33:02.8135530Z         "int": {
2026-07-26T22:33:02.8135646Z           "complete": false,
2026-07-26T22:33:02.8135746Z           "evidence": []
2026-07-26T22:33:02.8135850Z         },
2026-07-26T22:33:02.8135941Z         "unit": {
2026-07-26T22:33:02.8136064Z           "complete": true,
2026-07-26T22:33:02.8136169Z           "evidence": [
2026-07-26T22:33:02.8136271Z             {
2026-07-26T22:33:02.8136398Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:02.8136508Z               "line": 1809
2026-07-26T22:33:02.8136605Z             },
2026-07-26T22:33:02.8136708Z             {
2026-07-26T22:33:02.8136832Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:02.8136957Z               "line": 1819
2026-07-26T22:33:02.8137056Z             },
2026-07-26T22:33:02.8137155Z             {
2026-07-26T22:33:02.8137289Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:02.8137406Z               "line": 1841
2026-07-26T22:33:02.8137501Z             },
2026-07-26T22:33:02.8137607Z             {
2026-07-26T22:33:02.8137739Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:02.8137859Z               "line": 1856
2026-07-26T22:33:02.8137945Z             }
2026-07-26T22:33:02.8138040Z           ]
2026-07-26T22:33:02.8138140Z         }
2026-07-26T22:33:02.8138246Z       }
2026-07-26T22:33:02.8138345Z     },
2026-07-26T22:33:02.8138445Z     {
2026-07-26T22:33:02.8138560Z       "id": "REQ-CLI-1",
2026-07-26T22:33:02.8141165Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25). SUPERSEDED (F-025 item 3): the LISTING SHAPE now lives in REQ-ENDPOINT-LIST-NODE-GROUPED (node-grouped over unique instances, not grouped-by-subnet) + REQ-ENDPOINT-LIST-REST-FILTER (suspended-hidden + --show-all); the `--local` flag was dropped by REQ-ENDPOINT-LIST-MERGE-LOCAL (the list ALWAYS merges local). This REQ owns only the endpoint noun NAMESPACE + parse surface — not the render shape.",
2026-07-26T22:33:02.8141390Z       "requiredStages": [
2026-07-26T22:33:02.8141484Z         "impl",
2026-07-26T22:33:02.8141584Z         "unit"
2026-07-26T22:33:02.8141685Z       ],
2026-07-26T22:33:02.8141785Z       "stages": {
2026-07-26T22:33:02.8141885Z         "doc": {
2026-07-26T22:33:02.8141995Z           "complete": false,
2026-07-26T22:33:02.8142100Z           "evidence": []
2026-07-26T22:33:02.8142199Z         },
2026-07-26T22:33:02.8142415Z         "impl": {
2026-07-26T22:33:02.8142537Z           "complete": true,
2026-07-26T22:33:02.8142646Z           "evidence": [
2026-07-26T22:33:02.8142765Z             {
2026-07-26T22:33:02.8142892Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8142997Z               "line": 315
2026-07-26T22:33:02.8143094Z             },
2026-07-26T22:33:02.8143183Z             {
2026-07-26T22:33:02.8143312Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8143422Z               "line": 1368
2026-07-26T22:33:02.8143521Z             },
2026-07-26T22:33:02.8143637Z             {
2026-07-26T22:33:02.8143770Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8143869Z               "line": 3054
2026-07-26T22:33:02.8143970Z             }
2026-07-26T22:33:02.8144074Z           ]
2026-07-26T22:33:02.8144170Z         },
2026-07-26T22:33:02.8144281Z         "int": {
2026-07-26T22:33:02.8144389Z           "complete": false,
2026-07-26T22:33:02.8144513Z           "evidence": []
2026-07-26T22:33:02.8144614Z         },
2026-07-26T22:33:02.8144718Z         "unit": {
2026-07-26T22:33:02.8144818Z           "complete": true,
2026-07-26T22:33:02.8144929Z           "evidence": [
2026-07-26T22:33:02.8145033Z             {
2026-07-26T22:33:02.8145153Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8145273Z               "line": 15506
2026-07-26T22:33:02.8145371Z             }
2026-07-26T22:33:02.8145466Z           ]
2026-07-26T22:33:02.8145552Z         }
2026-07-26T22:33:02.8145658Z       }
2026-07-26T22:33:02.8145756Z     },
2026-07-26T22:33:02.8145857Z     {
2026-07-26T22:33:02.8145967Z       "id": "REQ-CLI-2",
2026-07-26T22:33:02.8146705Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-07-26T22:33:02.8146826Z       "requiredStages": [
2026-07-26T22:33:02.8146934Z         "impl",
2026-07-26T22:33:02.8147034Z         "unit"
2026-07-26T22:33:02.8147136Z       ],
2026-07-26T22:33:02.8147240Z       "stages": {
2026-07-26T22:33:02.8147340Z         "doc": {
2026-07-26T22:33:02.8147455Z           "complete": false,
2026-07-26T22:33:02.8147569Z           "evidence": []
2026-07-26T22:33:02.8147668Z         },
2026-07-26T22:33:02.8147768Z         "impl": {
2026-07-26T22:33:02.8147877Z           "complete": true,
2026-07-26T22:33:02.8147990Z           "evidence": [
2026-07-26T22:33:02.8148085Z             {
2026-07-26T22:33:02.8148224Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8148328Z               "line": 472
2026-07-26T22:33:02.8148433Z             },
2026-07-26T22:33:02.8148524Z             {
2026-07-26T22:33:02.8148667Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-07-26T22:33:02.8148773Z               "line": 97
2026-07-26T22:33:02.8148877Z             },
2026-07-26T22:33:02.8149044Z             {
2026-07-26T22:33:02.8149201Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-07-26T22:33:02.8149315Z               "line": 331
2026-07-26T22:33:02.8149516Z             },
2026-07-26T22:33:02.8149616Z             {
2026-07-26T22:33:02.8149750Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8149859Z               "line": 570
2026-07-26T22:33:02.8149959Z             },
2026-07-26T22:33:02.8150047Z             {
2026-07-26T22:33:02.8150183Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8150289Z               "line": 1491
2026-07-26T22:33:02.8150394Z             },
2026-07-26T22:33:02.8150493Z             {
2026-07-26T22:33:02.8150621Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8150735Z               "line": 4235
2026-07-26T22:33:02.8150833Z             },
2026-07-26T22:33:02.8150933Z             {
2026-07-26T22:33:02.8151063Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8151167Z               "line": 4381
2026-07-26T22:33:02.8151358Z             },
2026-07-26T22:33:02.8151462Z             {
2026-07-26T22:33:02.8151591Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8151711Z               "line": 4499
2026-07-26T22:33:02.8151815Z             }
2026-07-26T22:33:02.8151916Z           ]
2026-07-26T22:33:02.8152007Z         },
2026-07-26T22:33:02.8152111Z         "int": {
2026-07-26T22:33:02.8152231Z           "complete": false,
2026-07-26T22:33:02.8152336Z           "evidence": []
2026-07-26T22:33:02.8152430Z         },
2026-07-26T22:33:02.8152531Z         "unit": {
2026-07-26T22:33:02.8152655Z           "complete": true,
2026-07-26T22:33:02.8152759Z           "evidence": [
2026-07-26T22:33:02.8152861Z             {
2026-07-26T22:33:02.8153012Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-07-26T22:33:02.8153116Z               "line": 466
2026-07-26T22:33:02.8153216Z             },
2026-07-26T22:33:02.8153311Z             {
2026-07-26T22:33:02.8153437Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8153548Z               "line": 15639
2026-07-26T22:33:02.8153649Z             }
2026-07-26T22:33:02.8153752Z           ]
2026-07-26T22:33:02.8153848Z         }
2026-07-26T22:33:02.8153935Z       }
2026-07-26T22:33:02.8154039Z     },
2026-07-26T22:33:02.8154139Z     {
2026-07-26T22:33:02.8154254Z       "id": "REQ-CLI-3",
2026-07-26T22:33:02.8155002Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-07-26T22:33:02.8155122Z       "requiredStages": [
2026-07-26T22:33:02.8155222Z         "impl",
2026-07-26T22:33:02.8155322Z         "unit"
2026-07-26T22:33:02.8155422Z       ],
2026-07-26T22:33:02.8155527Z       "stages": {
2026-07-26T22:33:02.8155631Z         "doc": {
2026-07-26T22:33:02.8155752Z           "complete": false,
2026-07-26T22:33:02.8155856Z           "evidence": []
2026-07-26T22:33:02.8155945Z         },
2026-07-26T22:33:02.8156050Z         "impl": {
2026-07-26T22:33:02.8156165Z           "complete": true,
2026-07-26T22:33:02.8156279Z           "evidence": [
2026-07-26T22:33:02.8156374Z             {
2026-07-26T22:33:02.8156499Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8156612Z               "line": 1362
2026-07-26T22:33:02.8156718Z             }
2026-07-26T22:33:02.8156818Z           ]
2026-07-26T22:33:02.8156913Z         },
2026-07-26T22:33:02.8157013Z         "int": {
2026-07-26T22:33:02.8157128Z           "complete": false,
2026-07-26T22:33:02.8157242Z           "evidence": []
2026-07-26T22:33:02.8157342Z         },
2026-07-26T22:33:02.8157448Z         "unit": {
2026-07-26T22:33:02.8157562Z           "complete": true,
2026-07-26T22:33:02.8157667Z           "evidence": [
2026-07-26T22:33:02.8157767Z             {
2026-07-26T22:33:02.8157895Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8158016Z               "line": 15471
2026-07-26T22:33:02.8158120Z             }
2026-07-26T22:33:02.8158214Z           ]
2026-07-26T22:33:02.8158385Z         }
2026-07-26T22:33:02.8158488Z       }
2026-07-26T22:33:02.8158583Z     },
2026-07-26T22:33:02.8158684Z     {
2026-07-26T22:33:02.8158785Z       "id": "REQ-CLI-4",
2026-07-26T22:33:02.8160973Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-07-26T22:33:02.8161214Z       "requiredStages": [],
2026-07-26T22:33:02.8161337Z       "stages": {
2026-07-26T22:33:02.8161436Z         "doc": {
2026-07-26T22:33:02.8161556Z           "complete": false,
2026-07-26T22:33:02.8161666Z           "evidence": []
2026-07-26T22:33:02.8161760Z         },
2026-07-26T22:33:02.8161866Z         "impl": {
2026-07-26T22:33:02.8161980Z           "complete": true,
2026-07-26T22:33:02.8162094Z           "evidence": [
2026-07-26T22:33:02.8162195Z             {
2026-07-26T22:33:02.8162328Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8162437Z               "line": 10636
2026-07-26T22:33:02.8162539Z             }
2026-07-26T22:33:02.8162638Z           ]
2026-07-26T22:33:02.8162733Z         },
2026-07-26T22:33:02.8162835Z         "int": {
2026-07-26T22:33:02.8162957Z           "complete": false,
2026-07-26T22:33:02.8163057Z           "evidence": []
2026-07-26T22:33:02.8163164Z         },
2026-07-26T22:33:02.8163262Z         "unit": {
2026-07-26T22:33:02.8163382Z           "complete": false,
2026-07-26T22:33:02.8163488Z           "evidence": []
2026-07-26T22:33:02.8163586Z         }
2026-07-26T22:33:02.8163671Z       }
2026-07-26T22:33:02.8163771Z     },
2026-07-26T22:33:02.8163866Z     {
2026-07-26T22:33:02.8164007Z       "id": "REQ-CLI-BROKEN-PIPE-TOLERANT",
2026-07-26T22:33:02.8165505Z       "title": "#10 (F026 micro): `spt <anything> | <pager/Select-First-N>` must not PANIC when stdout closes early. A closed downstream reader mid-print panics with 'failed printing to stdout: The pipe is being closed. (os error 232)' (live repro: `spt daemon status | Select -First N`). Fix: tolerate BrokenPipe process-wide — a write to a closed stdout exits 0 (SIGPIPE-equivalent: a consumer that stops reading is a normal end, not a crash), without leaking a Rust panic + backtrace to the user.",
2026-07-26T22:33:02.8165633Z       "requiredStages": [
2026-07-26T22:33:02.8165739Z         "impl",
2026-07-26T22:33:02.8165848Z         "unit"
2026-07-26T22:33:02.8165953Z       ],
2026-07-26T22:33:02.8166054Z       "stages": {
2026-07-26T22:33:02.8166163Z         "doc": {
2026-07-26T22:33:02.8166293Z           "complete": false,
2026-07-26T22:33:02.8166407Z           "evidence": []
2026-07-26T22:33:02.8166501Z         },
2026-07-26T22:33:02.8166610Z         "impl": {
2026-07-26T22:33:02.8166721Z           "complete": true,
2026-07-26T22:33:02.8166835Z           "evidence": [
2026-07-26T22:33:02.8166930Z             {
2026-07-26T22:33:02.8167059Z               "path": "crates/spt/src/main.rs",
2026-07-26T22:33:02.8167163Z               "line": 31
2026-07-26T22:33:02.8167268Z             },
2026-07-26T22:33:02.8167364Z             {
2026-07-26T22:33:02.8167502Z               "path": "crates/spt/src/main.rs",
2026-07-26T22:33:02.8167607Z               "line": 45
2026-07-26T22:33:02.8167698Z             },
2026-07-26T22:33:02.8167793Z             {
2026-07-26T22:33:02.8167922Z               "path": "crates/spt/src/main.rs",
2026-07-26T22:33:02.8168032Z               "line": 65
2026-07-26T22:33:02.8168141Z             }
2026-07-26T22:33:02.8168237Z           ]
2026-07-26T22:33:02.8168441Z         },
2026-07-26T22:33:02.8168541Z         "int": {
2026-07-26T22:33:02.8168661Z           "complete": false,
2026-07-26T22:33:02.8168764Z           "evidence": []
2026-07-26T22:33:02.8168869Z         },
2026-07-26T22:33:02.8169062Z         "unit": {
2026-07-26T22:33:02.8169171Z           "complete": true,
2026-07-26T22:33:02.8169273Z           "evidence": [
2026-07-26T22:33:02.8169373Z             {
2026-07-26T22:33:02.8169501Z               "path": "crates/spt/src/main.rs",
2026-07-26T22:33:02.8169616Z               "line": 118
2026-07-26T22:33:02.8169720Z             }
2026-07-26T22:33:02.8169820Z           ]
2026-07-26T22:33:02.8169922Z         }
2026-07-26T22:33:02.8170016Z       }
2026-07-26T22:33:02.8170116Z     },
2026-07-26T22:33:02.8170212Z     {
2026-07-26T22:33:02.8170341Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-07-26T22:33:02.8173465Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-07-26T22:33:02.8173627Z       "requiredStages": [
2026-07-26T22:33:02.8173733Z         "impl",
2026-07-26T22:33:02.8173855Z         "unit"
2026-07-26T22:33:02.8173956Z       ],
2026-07-26T22:33:02.8174058Z       "stages": {
2026-07-26T22:33:02.8174160Z         "doc": {
2026-07-26T22:33:02.8174279Z           "complete": false,
2026-07-26T22:33:02.8174380Z           "evidence": []
2026-07-26T22:33:02.8174473Z         },
2026-07-26T22:33:02.8174572Z         "impl": {
2026-07-26T22:33:02.8174692Z           "complete": true,
2026-07-26T22:33:02.8174792Z           "evidence": [
2026-07-26T22:33:02.8174887Z             {
2026-07-26T22:33:02.8175031Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8175135Z               "line": 8
2026-07-26T22:33:02.8175235Z             },
2026-07-26T22:33:02.8175336Z             {
2026-07-26T22:33:02.8175478Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8175589Z               "line": 131
2026-07-26T22:33:02.8175698Z             },
2026-07-26T22:33:02.8175798Z             {
2026-07-26T22:33:02.8175932Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8176046Z               "line": 162
2026-07-26T22:33:02.8176141Z             },
2026-07-26T22:33:02.8176237Z             {
2026-07-26T22:33:02.8176370Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8176494Z               "line": 309
2026-07-26T22:33:02.8176601Z             }
2026-07-26T22:33:02.8176703Z           ]
2026-07-26T22:33:02.8176804Z         },
2026-07-26T22:33:02.8176906Z         "int": {
2026-07-26T22:33:02.8177023Z           "complete": false,
2026-07-26T22:33:02.8177131Z           "evidence": []
2026-07-26T22:33:02.8177228Z         },
2026-07-26T22:33:02.8177333Z         "unit": {
2026-07-26T22:33:02.8177456Z           "complete": true,
2026-07-26T22:33:02.8177552Z           "evidence": [
2026-07-26T22:33:02.8177657Z             {
2026-07-26T22:33:02.8177785Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8177905Z               "line": 345
2026-07-26T22:33:02.8178005Z             },
2026-07-26T22:33:02.8178104Z             {
2026-07-26T22:33:02.8178344Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8178453Z               "line": 352
2026-07-26T22:33:02.8178549Z             },
2026-07-26T22:33:02.8178648Z             {
2026-07-26T22:33:02.8178778Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8178892Z               "line": 359
2026-07-26T22:33:02.8179058Z             },
2026-07-26T22:33:02.8179160Z             {
2026-07-26T22:33:02.8179282Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8179387Z               "line": 366
2026-07-26T22:33:02.8179486Z             },
2026-07-26T22:33:02.8179590Z             {
2026-07-26T22:33:02.8179722Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8179838Z               "line": 393
2026-07-26T22:33:02.8179938Z             },
2026-07-26T22:33:02.8180153Z             {
2026-07-26T22:33:02.8180285Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8180395Z               "line": 403
2026-07-26T22:33:02.8180496Z             },
2026-07-26T22:33:02.8180590Z             {
2026-07-26T22:33:02.8180720Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8180839Z               "line": 413
2026-07-26T22:33:02.8180938Z             },
2026-07-26T22:33:02.8181034Z             {
2026-07-26T22:33:02.8181163Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8181267Z               "line": 427
2026-07-26T22:33:02.8181369Z             },
2026-07-26T22:33:02.8181468Z             {
2026-07-26T22:33:02.8181601Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8181702Z               "line": 436
2026-07-26T22:33:02.8181802Z             },
2026-07-26T22:33:02.8181892Z             {
2026-07-26T22:33:02.8182022Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8182131Z               "line": 444
2026-07-26T22:33:02.8182230Z             }
2026-07-26T22:33:02.8182330Z           ]
2026-07-26T22:33:02.8182429Z         }
2026-07-26T22:33:02.8182532Z       }
2026-07-26T22:33:02.8182638Z     },
2026-07-26T22:33:02.8182733Z     {
2026-07-26T22:33:02.8182856Z       "id": "REQ-CLI-JSON",
2026-07-26T22:33:02.8184977Z       "title": "A global `--json` flag (clap global=true) honored by the READ/STATUS command set: endpoint list/whoami, daemon status, subnet status/show-code, endpoint description/role, adapter list/version, notif list, grant list, access list, shell list, how-to (endpoint digest already has it). Action commands do not honor it. A shared print_json() helper + a coverage TEST asserting every command in the set emits valid JSON (guards against the missing-shared-formatter drift). Output uses explicit per-command output DTOs with committed field names — internal structs are NOT serialized verbatim (their fields would become a public contract; JSON is a consumed wire-parity surface). (v0.16.0)",
2026-07-26T22:33:02.8185113Z       "requiredStages": [
2026-07-26T22:33:02.8185213Z         "impl",
2026-07-26T22:33:02.8185315Z         "unit",
2026-07-26T22:33:02.8185428Z         "int"
2026-07-26T22:33:02.8185524Z       ],
2026-07-26T22:33:02.8185629Z       "stages": {
2026-07-26T22:33:02.8185728Z         "doc": {
2026-07-26T22:33:02.8185848Z           "complete": false,
2026-07-26T22:33:02.8185953Z           "evidence": []
2026-07-26T22:33:02.8186057Z         },
2026-07-26T22:33:02.8186154Z         "impl": {
2026-07-26T22:33:02.8186263Z           "complete": true,
2026-07-26T22:33:02.8186372Z           "evidence": [
2026-07-26T22:33:02.8186473Z             {
2026-07-26T22:33:02.8186606Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8186716Z               "line": 57
2026-07-26T22:33:02.8186817Z             },
2026-07-26T22:33:02.8186916Z             {
2026-07-26T22:33:02.8187040Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8187156Z               "line": 512
2026-07-26T22:33:02.8187254Z             },
2026-07-26T22:33:02.8187360Z             {
2026-07-26T22:33:02.8187485Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8187706Z               "line": 1300
2026-07-26T22:33:02.8187802Z             },
2026-07-26T22:33:02.8187907Z             {
2026-07-26T22:33:02.8188030Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8191413Z               "line": 1554
2026-07-26T22:33:02.8191541Z             },
2026-07-26T22:33:02.8191652Z             {
2026-07-26T22:33:02.8191799Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8191914Z               "line": 2884
2026-07-26T22:33:02.8192010Z             },
2026-07-26T22:33:02.8192114Z             {
2026-07-26T22:33:02.8192239Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8192343Z               "line": 2935
2026-07-26T22:33:02.8192443Z             },
2026-07-26T22:33:02.8192544Z             {
2026-07-26T22:33:02.8192663Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8193008Z               "line": 2968
2026-07-26T22:33:02.8193116Z             },
2026-07-26T22:33:02.8193217Z             {
2026-07-26T22:33:02.8193346Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8193455Z               "line": 3024
2026-07-26T22:33:02.8193546Z             },
2026-07-26T22:33:02.8193646Z             {
2026-07-26T22:33:02.8193769Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8193866Z               "line": 3060
2026-07-26T22:33:02.8193956Z             },
2026-07-26T22:33:02.8194046Z             {
2026-07-26T22:33:02.8194176Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8194308Z               "line": 3072
2026-07-26T22:33:02.8194418Z             },
2026-07-26T22:33:02.8194510Z             {
2026-07-26T22:33:02.8194632Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8194757Z               "line": 3091
2026-07-26T22:33:02.8194882Z             },
2026-07-26T22:33:02.8194990Z             {
2026-07-26T22:33:02.8195116Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8195220Z               "line": 3099
2026-07-26T22:33:02.8195318Z             },
2026-07-26T22:33:02.8195428Z             {
2026-07-26T22:33:02.8195579Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8195683Z               "line": 3123
2026-07-26T22:33:02.8195803Z             },
2026-07-26T22:33:02.8195917Z             {
2026-07-26T22:33:02.8196060Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8196165Z               "line": 3183
2026-07-26T22:33:02.8196265Z             },
2026-07-26T22:33:02.8196355Z             {
2026-07-26T22:33:02.8196485Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8196580Z               "line": 4503
2026-07-26T22:33:02.8196679Z             },
2026-07-26T22:33:02.8196776Z             {
2026-07-26T22:33:02.8196899Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8196994Z               "line": 4561
2026-07-26T22:33:02.8197110Z             },
2026-07-26T22:33:02.8197210Z             {
2026-07-26T22:33:02.8197343Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8197448Z               "line": 4717
2026-07-26T22:33:02.8197548Z             },
2026-07-26T22:33:02.8197643Z             {
2026-07-26T22:33:02.8197796Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8197905Z               "line": 5117
2026-07-26T22:33:02.8198016Z             },
2026-07-26T22:33:02.8198110Z             {
2026-07-26T22:33:02.8198242Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8198348Z               "line": 5129
2026-07-26T22:33:02.8198449Z             },
2026-07-26T22:33:02.8198557Z             {
2026-07-26T22:33:02.8198696Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8198801Z               "line": 5164
2026-07-26T22:33:02.8198900Z             },
2026-07-26T22:33:02.8199054Z             {
2026-07-26T22:33:02.8199172Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8199287Z               "line": 5182
2026-07-26T22:33:02.8199402Z             },
2026-07-26T22:33:02.8199597Z             {
2026-07-26T22:33:02.8199721Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8199826Z               "line": 8059
2026-07-26T22:33:02.8199922Z             },
2026-07-26T22:33:02.8200027Z             {
2026-07-26T22:33:02.8200145Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8200266Z               "line": 8078
2026-07-26T22:33:02.8200364Z             },
2026-07-26T22:33:02.8200468Z             {
2026-07-26T22:33:02.8200593Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8200701Z               "line": 8701
2026-07-26T22:33:02.8200795Z             },
2026-07-26T22:33:02.8200900Z             {
2026-07-26T22:33:02.8201020Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8201128Z               "line": 8716
2026-07-26T22:33:02.8201225Z             },
2026-07-26T22:33:02.8201420Z             {
2026-07-26T22:33:02.8201545Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8201658Z               "line": 8726
2026-07-26T22:33:02.8201763Z             },
2026-07-26T22:33:02.8201865Z             {
2026-07-26T22:33:02.8201987Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8202101Z               "line": 8777
2026-07-26T22:33:02.8202207Z             },
2026-07-26T22:33:02.8202302Z             {
2026-07-26T22:33:02.8202425Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8202536Z               "line": 8887
2026-07-26T22:33:02.8202631Z             },
2026-07-26T22:33:02.8202726Z             {
2026-07-26T22:33:02.8202847Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8202960Z               "line": 8926
2026-07-26T22:33:02.8203060Z             },
2026-07-26T22:33:02.8203161Z             {
2026-07-26T22:33:02.8203284Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8203402Z               "line": 9912
2026-07-26T22:33:02.8203507Z             },
2026-07-26T22:33:02.8203605Z             {
2026-07-26T22:33:02.8203729Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8203849Z               "line": 9941
2026-07-26T22:33:02.8203939Z             },
2026-07-26T22:33:02.8204044Z             {
2026-07-26T22:33:02.8204169Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8204282Z               "line": 9957
2026-07-26T22:33:02.8204382Z             },
2026-07-26T22:33:02.8204483Z             {
2026-07-26T22:33:02.8204606Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8204716Z               "line": 9996
2026-07-26T22:33:02.8204822Z             },
2026-07-26T22:33:02.8204921Z             {
2026-07-26T22:33:02.8205046Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8205151Z               "line": 10005
2026-07-26T22:33:02.8205246Z             },
2026-07-26T22:33:02.8205341Z             {
2026-07-26T22:33:02.8205475Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8205579Z               "line": 10081
2026-07-26T22:33:02.8205681Z             },
2026-07-26T22:33:02.8205766Z             {
2026-07-26T22:33:02.8205902Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8206007Z               "line": 10163
2026-07-26T22:33:02.8206107Z             },
2026-07-26T22:33:02.8206210Z             {
2026-07-26T22:33:02.8206334Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8206440Z               "line": 10175
2026-07-26T22:33:02.8206543Z             },
2026-07-26T22:33:02.8206639Z             {
2026-07-26T22:33:02.8206768Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8206867Z               "line": 10183
2026-07-26T22:33:02.8206973Z             },
2026-07-26T22:33:02.8207068Z             {
2026-07-26T22:33:02.8207192Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8207298Z               "line": 10475
2026-07-26T22:33:02.8207402Z             },
2026-07-26T22:33:02.8207506Z             {
2026-07-26T22:33:02.8207637Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8207745Z               "line": 11445
2026-07-26T22:33:02.8207927Z             },
2026-07-26T22:33:02.8208022Z             {
2026-07-26T22:33:02.8208145Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8208247Z               "line": 11832
2026-07-26T22:33:02.8208351Z             },
2026-07-26T22:33:02.8208446Z             {
2026-07-26T22:33:02.8208576Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8208685Z               "line": 11843
2026-07-26T22:33:02.8208784Z             },
2026-07-26T22:33:02.8208879Z             {
2026-07-26T22:33:02.8209084Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8209189Z               "line": 12153
2026-07-26T22:33:02.8209304Z             },
2026-07-26T22:33:02.8209398Z             {
2026-07-26T22:33:02.8209523Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8209638Z               "line": 12863
2026-07-26T22:33:02.8209838Z             },
2026-07-26T22:33:02.8209933Z             {
2026-07-26T22:33:02.8210066Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8210182Z               "line": 12873
2026-07-26T22:33:02.8210281Z             },
2026-07-26T22:33:02.8210381Z             {
2026-07-26T22:33:02.8210502Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8210615Z               "line": 12946
2026-07-26T22:33:02.8210705Z             }
2026-07-26T22:33:02.8210806Z           ]
2026-07-26T22:33:02.8210916Z         },
2026-07-26T22:33:02.8211028Z         "int": {
2026-07-26T22:33:02.8211138Z           "complete": true,
2026-07-26T22:33:02.8211237Z           "evidence": [
2026-07-26T22:33:02.8211341Z             {
2026-07-26T22:33:02.8211485Z               "path": "crates/spt/tests/json_emit.rs",
2026-07-26T22:33:02.8211580Z               "line": 54
2026-07-26T22:33:02.8211679Z             }
2026-07-26T22:33:02.8211780Z           ]
2026-07-26T22:33:02.8211880Z         },
2026-07-26T22:33:02.8211980Z         "unit": {
2026-07-26T22:33:02.8212095Z           "complete": true,
2026-07-26T22:33:02.8212185Z           "evidence": [
2026-07-26T22:33:02.8212290Z             {
2026-07-26T22:33:02.8212410Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8212524Z               "line": 15432
2026-07-26T22:33:02.8212623Z             }
2026-07-26T22:33:02.8212714Z           ]
2026-07-26T22:33:02.8212805Z         }
2026-07-26T22:33:02.8212900Z       }
2026-07-26T22:33:02.8212995Z     },
2026-07-26T22:33:02.8213097Z     {
2026-07-26T22:33:02.8213219Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-07-26T22:33:02.8217790Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-07-26T22:33:02.8218120Z       "requiredStages": [
2026-07-26T22:33:02.8218230Z         "impl",
2026-07-26T22:33:02.8218330Z         "unit"
2026-07-26T22:33:02.8218434Z       ],
2026-07-26T22:33:02.8218540Z       "stages": {
2026-07-26T22:33:02.8218643Z         "doc": {
2026-07-26T22:33:02.8218754Z           "complete": false,
2026-07-26T22:33:02.8218870Z           "evidence": []
2026-07-26T22:33:02.8219030Z         },
2026-07-26T22:33:02.8219132Z         "impl": {
2026-07-26T22:33:02.8219250Z           "complete": true,
2026-07-26T22:33:02.8219368Z           "evidence": [
2026-07-26T22:33:02.8219468Z             {
2026-07-26T22:33:02.8219630Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8219739Z               "line": 155
2026-07-26T22:33:02.8219845Z             },
2026-07-26T22:33:02.8219940Z             {
2026-07-26T22:33:02.8220074Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8220283Z               "line": 2345
2026-07-26T22:33:02.8220374Z             },
2026-07-26T22:33:02.8220480Z             {
2026-07-26T22:33:02.8220602Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8220718Z               "line": 4899
2026-07-26T22:33:02.8220813Z             },
2026-07-26T22:33:02.8220917Z             {
2026-07-26T22:33:02.8221038Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8221147Z               "line": 8823
2026-07-26T22:33:02.8221241Z             },
2026-07-26T22:33:02.8221342Z             {
2026-07-26T22:33:02.8221466Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8221575Z               "line": 8964
2026-07-26T22:33:02.8221665Z             },
2026-07-26T22:33:02.8221760Z             {
2026-07-26T22:33:02.8221873Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8221987Z               "line": 9936
2026-07-26T22:33:02.8222083Z             },
2026-07-26T22:33:02.8222192Z             {
2026-07-26T22:33:02.8222321Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8222426Z               "line": 44
2026-07-26T22:33:02.8222530Z             }
2026-07-26T22:33:02.8222626Z           ]
2026-07-26T22:33:02.8222727Z         },
2026-07-26T22:33:02.8222826Z         "int": {
2026-07-26T22:33:02.8222941Z           "complete": false,
2026-07-26T22:33:02.8223041Z           "evidence": []
2026-07-26T22:33:02.8223145Z         },
2026-07-26T22:33:02.8223260Z         "unit": {
2026-07-26T22:33:02.8223356Z           "complete": true,
2026-07-26T22:33:02.8223456Z           "evidence": [
2026-07-26T22:33:02.8223555Z             {
2026-07-26T22:33:02.8223690Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8223794Z               "line": 18414
2026-07-26T22:33:02.8223900Z             },
2026-07-26T22:33:02.8223995Z             {
2026-07-26T22:33:02.8224133Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8224243Z               "line": 377
2026-07-26T22:33:02.8224343Z             },
2026-07-26T22:33:02.8224442Z             {
2026-07-26T22:33:02.8224570Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8224669Z               "line": 454
2026-07-26T22:33:02.8224769Z             },
2026-07-26T22:33:02.8224868Z             {
2026-07-26T22:33:02.8225002Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8225107Z               "line": 477
2026-07-26T22:33:02.8225207Z             },
2026-07-26T22:33:02.8225303Z             {
2026-07-26T22:33:02.8225431Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8225542Z               "line": 491
2026-07-26T22:33:02.8225646Z             }
2026-07-26T22:33:02.8225736Z           ]
2026-07-26T22:33:02.8225827Z         }
2026-07-26T22:33:02.8225923Z       }
2026-07-26T22:33:02.8226008Z     },
2026-07-26T22:33:02.8226108Z     {
2026-07-26T22:33:02.8226228Z       "id": "REQ-CLI-WIN-VT-ENABLE",
2026-07-26T22:33:02.8228389Z       "title": "A7 (F028, operator, Win10 conhost): ANSI emitted without VT enable → garbled console. Evidence (raw PowerShell 7, Win10 conhost): literal `←[36m` in `endpoint list` + `--help`. ROOT: ENABLE_VIRTUAL_TERMINAL_PROCESSING is enabled ONLY on the rc attach path (rc.rs:746, REQ-RC-WIN-VT-OUTPUT) — plain CLI stdout never enables it, and the color decision doesn't fall back when the console can't render VT. FIX: lift the rc.rs VT-enable into a SHARED startup helper for every colored-output path; if SetConsoleMode fails (or stdout isn't a console), STRIP colors (the ansi_wrap/helpfmt color=false path already exists — plumb the decision, not new rendering). Windows Terminal masks this (VT always on) — TEST on raw conhost. See triage A7.",
2026-07-26T22:33:02.8228622Z       "requiredStages": [
2026-07-26T22:33:02.8228728Z         "impl",
2026-07-26T22:33:02.8228828Z         "unit"
2026-07-26T22:33:02.8228923Z       ],
2026-07-26T22:33:02.8229124Z       "stages": {
2026-07-26T22:33:02.8229228Z         "doc": {
2026-07-26T22:33:02.8229495Z           "complete": false,
2026-07-26T22:33:02.8229609Z           "evidence": []
2026-07-26T22:33:02.8229701Z         },
2026-07-26T22:33:02.8229824Z         "impl": {
2026-07-26T22:33:02.8229932Z           "complete": true,
2026-07-26T22:33:02.8230038Z           "evidence": [
2026-07-26T22:33:02.8230130Z             {
2026-07-26T22:33:02.8230266Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8230372Z               "line": 61
2026-07-26T22:33:02.8230468Z             }
2026-07-26T22:33:02.8230566Z           ]
2026-07-26T22:33:02.8230663Z         },
2026-07-26T22:33:02.8230762Z         "int": {
2026-07-26T22:33:02.8230876Z           "complete": false,
2026-07-26T22:33:02.8230987Z           "evidence": []
2026-07-26T22:33:02.8231082Z         },
2026-07-26T22:33:02.8231186Z         "unit": {
2026-07-26T22:33:02.8231288Z           "complete": true,
2026-07-26T22:33:02.8231401Z           "evidence": [
2026-07-26T22:33:02.8231496Z             {
2026-07-26T22:33:02.8231636Z               "path": "crates/spt/src/helpfmt.rs",
2026-07-26T22:33:02.8231744Z               "line": 329
2026-07-26T22:33:02.8231844Z             }
2026-07-26T22:33:02.8231951Z           ]
2026-07-26T22:33:02.8232050Z         }
2026-07-26T22:33:02.8232144Z       }
2026-07-26T22:33:02.8232244Z     },
2026-07-26T22:33:02.8232344Z     {
2026-07-26T22:33:02.8232504Z       "id": "REQ-CONN-BLACKHOLE-LIFECYCLE-HARNESS",
2026-07-26T22:33:02.8235844Z       "title": "MSG-IDENTITY W6 / F-039 leg e (doyle W6 LOCK 2026-07-10, minted per amendment 3 — hertz's five invariants VERBATIM from his RCA fix-shape item 5): 'Build a deterministic black-holed-controller harness against current v0.30.6 semantics and assert: unrelated sessions continue; the bad physical connection is canceled/closed within the bound; its writer exits; a fresh viewer can attach; no lock or task remains owned by the retired connection.' The harness is the standing conformance rig for the r4 SHAREDSEND fix-class — hertz's RCA discipline: only after a timestamped incident maps to a FAILING lifecycle invariant does an ownership/cancellation defect get fixed (the likely shape being complete physical-connection cancellation and writer-task join/retirement, never a broader timeout increase). Consumes REQ-CONN-POISON-ATTRIBUTION's records (conn id + lifecycle events are what make the five assertions checkable deterministically). Kin REQ-HAZARD-SHAREDSEND-NO-BLOCKING-WRITE-UNDER-LOCK (the invariant class under test — its brain_decouple int stays the Windows-mandatory gate leg), REQ-CONN-POISON-DIAL-SCOPE.",
2026-07-26T22:33:02.8236019Z       "requiredStages": [
2026-07-26T22:33:02.8236116Z         "int"
2026-07-26T22:33:02.8236216Z       ],
2026-07-26T22:33:02.8236320Z       "stages": {
2026-07-26T22:33:02.8236421Z         "doc": {
2026-07-26T22:33:02.8236544Z           "complete": false,
2026-07-26T22:33:02.8236649Z           "evidence": []
2026-07-26T22:33:02.8236746Z         },
2026-07-26T22:33:02.8236849Z         "impl": {
2026-07-26T22:33:02.8236992Z           "complete": false,
2026-07-26T22:33:02.8237094Z           "evidence": []
2026-07-26T22:33:02.8237197Z         },
2026-07-26T22:33:02.8237288Z         "int": {
2026-07-26T22:33:02.8237512Z           "complete": true,
2026-07-26T22:33:02.8237616Z           "evidence": [
2026-07-26T22:33:02.8237717Z             {
2026-07-26T22:33:02.8237895Z               "path": "crates/spt-daemon/tests/conn_blackhole_lifecycle.rs",
2026-07-26T22:33:02.8238014Z               "line": 247
2026-07-26T22:33:02.8238115Z             }
2026-07-26T22:33:02.8238219Z           ]
2026-07-26T22:33:02.8238314Z         },
2026-07-26T22:33:02.8238416Z         "unit": {
2026-07-26T22:33:02.8238524Z           "complete": false,
2026-07-26T22:33:02.8238639Z           "evidence": []
2026-07-26T22:33:02.8238735Z         }
2026-07-26T22:33:02.8238839Z       }
2026-07-26T22:33:02.8239021Z     },
2026-07-26T22:33:02.8239115Z     {
2026-07-26T22:33:02.8239240Z       "id": "REQ-CONN-POISON-ATTRIBUTION",
2026-07-26T22:33:02.8244796Z       "title": "MSG-IDENTITY W6 / F-039 legs b-d (doyle W6 LOCK 2026-07-10, minted per amendment 3): every broker-conn lifecycle record is ATTRIBUTABLE — the W6 RCA's terminal undecidability (per-line 1:1 CONN_WRITE_POISONED churn = fresh-carrier churn OR stderr interleave artifact) exists because records carry no stable conn identity, no role/endpoint/session context, and no timestamps, and the once-per-conn poison latch hides multiplicity. THREE LEGS. (b) IDENTITY: mint a stable per-physical-conn id (monotonic u64 at conn construction — Arc::ptr_eq is the only identity today and it does not survive a log line) plus subscriber role and endpoint/session where known, stamped on CONN_WRITE_POISONED, CONN_WRITE_RETIRED, logical stall-evict, attach/resume/detach, and write-retirement records (RCA attach sites: presence nethost.rs:379, stream nethost.rs:258, controller broker.rs:891, viewer broker.rs:1073). (c) TIME: daemon stderr correlation records carry wall-clock AND monotonic timestamps (stderrlog has neither; broker+brain share one file — interleave is unresolvable without them). (d) LIFECYCLE (doyle-confirmed UNCONDITIONAL, not debug-gated): one BOUNDED set of per-conn lifecycle events — write start/timeout-cancel/transport close/writer exit/replacement-reattach (hertz RCA fix-shape items 1-3). Constraint (doyle LOCK): the split/attribution must not REDUCE total information, only correct its attribution; NO timeout-value changes; NO suppression-as-fix. Gate: unit — lifecycle records carry conn id + role + timestamps; the id is unique per physical conn and stable across that conn's records. Kin REQ-CONN-POISON-DIAL-SCOPE (leg a, the token split these fields ride on), REQ-CONN-BLACKHOLE-LIFECYCLE-HARNESS (leg e, consumes these records), REQ-HAZARD-SHAREDSEND-NO-BLOCKING-WRITE-UNDER-LOCK (behavior invariant preserved).",
2026-07-26T22:33:02.8245092Z       "requiredStages": [
2026-07-26T22:33:02.8245200Z         "impl",
2026-07-26T22:33:02.8245301Z         "unit"
2026-07-26T22:33:02.8245402Z       ],
2026-07-26T22:33:02.8245529Z       "stages": {
2026-07-26T22:33:02.8245628Z         "doc": {
2026-07-26T22:33:02.8245748Z           "complete": false,
2026-07-26T22:33:02.8245869Z           "evidence": []
2026-07-26T22:33:02.8245969Z         },
2026-07-26T22:33:02.8246065Z         "impl": {
2026-07-26T22:33:02.8246179Z           "complete": true,
2026-07-26T22:33:02.8246293Z           "evidence": [
2026-07-26T22:33:02.8246404Z             {
2026-07-26T22:33:02.8246556Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8246667Z               "line": 1393
2026-07-26T22:33:02.8246771Z             },
2026-07-26T22:33:02.8246866Z             {
2026-07-26T22:33:02.8247015Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8247114Z               "line": 1621
2026-07-26T22:33:02.8247214Z             },
2026-07-26T22:33:02.8247316Z             {
2026-07-26T22:33:02.8247457Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8247552Z               "line": 1651
2026-07-26T22:33:02.8247663Z             },
2026-07-26T22:33:02.8247762Z             {
2026-07-26T22:33:02.8247911Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8248119Z               "line": 2205
2026-07-26T22:33:02.8248224Z             },
2026-07-26T22:33:02.8248314Z             {
2026-07-26T22:33:02.8248460Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8248565Z               "line": 2359
2026-07-26T22:33:02.8248661Z             },
2026-07-26T22:33:02.8248761Z             {
2026-07-26T22:33:02.8248909Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8249089Z               "line": 2421
2026-07-26T22:33:02.8249194Z             },
2026-07-26T22:33:02.8249300Z             {
2026-07-26T22:33:02.8249447Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8249548Z               "line": 2621
2026-07-26T22:33:02.8249647Z             },
2026-07-26T22:33:02.8249747Z             {
2026-07-26T22:33:02.8249991Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8250090Z               "line": 2668
2026-07-26T22:33:02.8250197Z             },
2026-07-26T22:33:02.8250301Z             {
2026-07-26T22:33:02.8250444Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8250554Z               "line": 2703
2026-07-26T22:33:02.8250653Z             },
2026-07-26T22:33:02.8250749Z             {
2026-07-26T22:33:02.8250893Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8250996Z               "line": 4111
2026-07-26T22:33:02.8251100Z             },
2026-07-26T22:33:02.8251197Z             {
2026-07-26T22:33:02.8251329Z               "path": "crates/spt-daemon/src/conn.rs",
2026-07-26T22:33:02.8251429Z               "line": 78
2026-07-26T22:33:02.8251540Z             },
2026-07-26T22:33:02.8251635Z             {
2026-07-26T22:33:02.8251779Z               "path": "crates/spt-daemon/src/conn.rs",
2026-07-26T22:33:02.8251883Z               "line": 90
2026-07-26T22:33:02.8251987Z             },
2026-07-26T22:33:02.8252088Z             {
2026-07-26T22:33:02.8252226Z               "path": "crates/spt-daemon/src/conn.rs",
2026-07-26T22:33:02.8252345Z               "line": 100
2026-07-26T22:33:02.8252436Z             },
2026-07-26T22:33:02.8252531Z             {
2026-07-26T22:33:02.8252664Z               "path": "crates/spt-daemon/src/conn.rs",
2026-07-26T22:33:02.8252780Z               "line": 222
2026-07-26T22:33:02.8252883Z             },
2026-07-26T22:33:02.8252984Z             {
2026-07-26T22:33:02.8253119Z               "path": "crates/spt-daemon/src/conn.rs",
2026-07-26T22:33:02.8253236Z               "line": 269
2026-07-26T22:33:02.8253330Z             },
2026-07-26T22:33:02.8253431Z             {
2026-07-26T22:33:02.8253562Z               "path": "crates/spt-daemon/src/conn.rs",
2026-07-26T22:33:02.8253677Z               "line": 457
2026-07-26T22:33:02.8253777Z             },
2026-07-26T22:33:02.8253877Z             {
2026-07-26T22:33:02.8254020Z               "path": "crates/spt-daemon/src/conn.rs",
2026-07-26T22:33:02.8254135Z               "line": 467
2026-07-26T22:33:02.8254239Z             },
2026-07-26T22:33:02.8254350Z             {
2026-07-26T22:33:02.8254483Z               "path": "crates/spt-daemon/src/conn.rs",
2026-07-26T22:33:02.8254602Z               "line": 486
2026-07-26T22:33:02.8254703Z             },
2026-07-26T22:33:02.8254812Z             {
2026-07-26T22:33:02.8254950Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8255056Z               "line": 56
2026-07-26T22:33:02.8255155Z             },
2026-07-26T22:33:02.8255260Z             {
2026-07-26T22:33:02.8255398Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8255517Z               "line": 387
2026-07-26T22:33:02.8255609Z             },
2026-07-26T22:33:02.8255713Z             {
2026-07-26T22:33:02.8255861Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.8255977Z               "line": 566
2026-07-26T22:33:02.8256084Z             },
2026-07-26T22:33:02.8256183Z             {
2026-07-26T22:33:02.8256322Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.8256544Z               "line": 747
2026-07-26T22:33:02.8256649Z             }
2026-07-26T22:33:02.8256749Z           ]
2026-07-26T22:33:02.8256853Z         },
2026-07-26T22:33:02.8256955Z         "int": {
2026-07-26T22:33:02.8257073Z           "complete": false,
2026-07-26T22:33:02.8257178Z           "evidence": []
2026-07-26T22:33:02.8257274Z         },
2026-07-26T22:33:02.8257374Z         "unit": {
2026-07-26T22:33:02.8257493Z           "complete": true,
2026-07-26T22:33:02.8257585Z           "evidence": [
2026-07-26T22:33:02.8257684Z             {
2026-07-26T22:33:02.8257822Z               "path": "crates/spt-daemon/src/conn.rs",
2026-07-26T22:33:02.8257937Z               "line": 713
2026-07-26T22:33:02.8258036Z             },
2026-07-26T22:33:02.8258127Z             {
2026-07-26T22:33:02.8258261Z               "path": "crates/spt-daemon/src/conn.rs",
2026-07-26T22:33:02.8258452Z               "line": 785
2026-07-26T22:33:02.8258553Z             }
2026-07-26T22:33:02.8258665Z           ]
2026-07-26T22:33:02.8258760Z         }
2026-07-26T22:33:02.8258861Z       }
2026-07-26T22:33:02.8259025Z     },
2026-07-26T22:33:02.8259120Z     {
2026-07-26T22:33:02.8259250Z       "id": "REQ-CONN-POISON-DIAL-SCOPE",
2026-07-26T22:33:02.8264861Z       "title": "MSG-IDENTITY W6 / F-039 (deployah field-acceptance follow-up 2026-07-10, RCA-FIRST — mint per the v0.30.6 PASS handoff): ambient CONN_WRITE_POISONED log-churn correlates 1:1 with PUMP_PEER_FAIL submit-dials to OFFLINE peers (enlyzeam/kitsubito/gravity) with NO wedge and NO freeze — pre-existed the blackhole rig = log-noise/mislabel, not a defect in the r4 fix. CODE CONTEXT: conn.rs poison_and_cancel emits the loud CONN_WRITE_POISONED line for a write that 'exceeded its bound (OR FAILED)' (conn.rs:181) — the fast-FAIL branch (broken pipe / conn refused on an already-dead counterpart) shares the log tag with the TIMEOUT branch that is the field-acceptance wedge observable, so routine conn teardown under offline-peer dial churn reads like poison events. RCA-FIRST: pin the exact write site that fails per PUMP_PEER_FAIL cycle (BrokerConn is broker-side — which broker conn write rides each pump dial failure? status/event fan-out to a departed subscriber? brain-side notification?) BEFORE changing anything — the correlation mechanism is unpinned. FIX SHAPE (post-RCA, doyle rules at lock): reserve the loud CONN_WRITE_POISONED token for the DEADLINE-EXCEEDED class (the wedge observable blackhole-controller.ps1 watches); a plain write-FAIL on an already-dead conn retires quietly (debug-level or a distinct low-noise token). MUST NOT weaken the r4 invariant: every failure path still poisons + retires the conn (REQ-HAZARD-SHAREDSEND-NO-BLOCKING-WRITE-UNDER-LOCK behavior unchanged — only the log LOUDNESS is scoped). Gate: unit — deadline-exceeded emits the loud token, fast-fail does not (both still poison); field — offline-peer churn no longer floods daemon.stderr.log with CONN_WRITE_POISONED. Kin REQ-HAZARD-SHAREDSEND-NO-BLOCKING-WRITE-UNDER-LOCK (the invariant this must preserve), REQ-PUMP-PEER-ISOLATION (the offline-peer dial neighborhood), [[v0306-published]].",
2026-07-26T22:33:02.8265076Z       "requiredStages": [
2026-07-26T22:33:02.8265176Z         "impl",
2026-07-26T22:33:02.8265277Z         "unit"
2026-07-26T22:33:02.8265377Z       ],
2026-07-26T22:33:02.8265482Z       "stages": {
2026-07-26T22:33:02.8265578Z         "doc": {
2026-07-26T22:33:02.8265692Z           "complete": false,
2026-07-26T22:33:02.8265806Z           "evidence": []
2026-07-26T22:33:02.8265902Z         },
2026-07-26T22:33:02.8266000Z         "impl": {
2026-07-26T22:33:02.8266106Z           "complete": true,
2026-07-26T22:33:02.8266226Z           "evidence": [
2026-07-26T22:33:02.8266325Z             {
2026-07-26T22:33:02.8266465Z               "path": "crates/spt-daemon/src/conn.rs",
2026-07-26T22:33:02.8266575Z               "line": 239
2026-07-26T22:33:02.8266701Z             }
2026-07-26T22:33:02.8266792Z           ]
2026-07-26T22:33:02.8266892Z         },
2026-07-26T22:33:02.8267099Z         "int": {
2026-07-26T22:33:02.8267209Z           "complete": false,
2026-07-26T22:33:02.8267314Z           "evidence": []
2026-07-26T22:33:02.8267418Z         },
2026-07-26T22:33:02.8267520Z         "unit": {
2026-07-26T22:33:02.8267638Z           "complete": true,
2026-07-26T22:33:02.8267748Z           "evidence": [
2026-07-26T22:33:02.8267839Z             {
2026-07-26T22:33:02.8267976Z               "path": "crates/spt-daemon/src/conn.rs",
2026-07-26T22:33:02.8268087Z               "line": 707
2026-07-26T22:33:02.8268177Z             },
2026-07-26T22:33:02.8268277Z             {
2026-07-26T22:33:02.8268416Z               "path": "crates/spt-daemon/src/conn.rs",
2026-07-26T22:33:02.8268529Z               "line": 753
2026-07-26T22:33:02.8268625Z             }
2026-07-26T22:33:02.8268726Z           ]
2026-07-26T22:33:02.8268826Z         }
2026-07-26T22:33:02.8269122Z       }
2026-07-26T22:33:02.8269216Z     },
2026-07-26T22:33:02.8269329Z     {
2026-07-26T22:33:02.8269444Z       "id": "REQ-CONSENT-1",
2026-07-26T22:33:02.8270410Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-07-26T22:33:02.8270533Z       "requiredStages": [
2026-07-26T22:33:02.8270634Z         "impl",
2026-07-26T22:33:02.8270739Z         "unit"
2026-07-26T22:33:02.8270839Z       ],
2026-07-26T22:33:02.8270954Z       "stages": {
2026-07-26T22:33:02.8271049Z         "doc": {
2026-07-26T22:33:02.8271173Z           "complete": false,
2026-07-26T22:33:02.8271283Z           "evidence": []
2026-07-26T22:33:02.8271387Z         },
2026-07-26T22:33:02.8271488Z         "impl": {
2026-07-26T22:33:02.8271613Z           "complete": true,
2026-07-26T22:33:02.8271721Z           "evidence": [
2026-07-26T22:33:02.8271817Z             {
2026-07-26T22:33:02.8271971Z               "path": "crates/spt-daemon/src/grants.rs",
2026-07-26T22:33:02.8272078Z               "line": 27
2026-07-26T22:33:02.8272168Z             },
2026-07-26T22:33:02.8272269Z             {
2026-07-26T22:33:02.8272393Z               "path": "crates/spt-daemon/src/grants.rs",
2026-07-26T22:33:02.8272501Z               "line": 75
2026-07-26T22:33:02.8272603Z             },
2026-07-26T22:33:02.8272708Z             {
2026-07-26T22:33:02.8272845Z               "path": "crates/spt-daemon/src/grants.rs",
2026-07-26T22:33:02.8272956Z               "line": 98
2026-07-26T22:33:02.8273060Z             },
2026-07-26T22:33:02.8273160Z             {
2026-07-26T22:33:02.8273304Z               "path": "crates/spt-store/src/grants.rs",
2026-07-26T22:33:02.8273408Z               "line": 82
2026-07-26T22:33:02.8273513Z             },
2026-07-26T22:33:02.8273628Z             {
2026-07-26T22:33:02.8273766Z               "path": "crates/spt-store/src/grants.rs",
2026-07-26T22:33:02.8273867Z               "line": 109
2026-07-26T22:33:02.8273976Z             },
2026-07-26T22:33:02.8274076Z             {
2026-07-26T22:33:02.8274215Z               "path": "crates/spt-store/src/grants.rs",
2026-07-26T22:33:02.8274328Z               "line": 127
2026-07-26T22:33:02.8274432Z             },
2026-07-26T22:33:02.8274532Z             {
2026-07-26T22:33:02.8274669Z               "path": "crates/spt-store/src/grants.rs",
2026-07-26T22:33:02.8274778Z               "line": 142
2026-07-26T22:33:02.8274879Z             },
2026-07-26T22:33:02.8274979Z             {
2026-07-26T22:33:02.8275111Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8275222Z               "line": 12860
2026-07-26T22:33:02.8275322Z             }
2026-07-26T22:33:02.8275426Z           ]
2026-07-26T22:33:02.8275528Z         },
2026-07-26T22:33:02.8275627Z         "int": {
2026-07-26T22:33:02.8275746Z           "complete": false,
2026-07-26T22:33:02.8275851Z           "evidence": []
2026-07-26T22:33:02.8275956Z         },
2026-07-26T22:33:02.8276157Z         "unit": {
2026-07-26T22:33:02.8276280Z           "complete": true,
2026-07-26T22:33:02.8276380Z           "evidence": [
2026-07-26T22:33:02.8276477Z             {
2026-07-26T22:33:02.8276619Z               "path": "crates/spt-daemon/src/grants.rs",
2026-07-26T22:33:02.8276734Z               "line": 334
2026-07-26T22:33:02.8276834Z             },
2026-07-26T22:33:02.8276938Z             {
2026-07-26T22:33:02.8277082Z               "path": "crates/spt-daemon/src/grants.rs",
2026-07-26T22:33:02.8277186Z               "line": 380
2026-07-26T22:33:02.8277290Z             },
2026-07-26T22:33:02.8277385Z             {
2026-07-26T22:33:02.8277526Z               "path": "crates/spt-daemon/src/grants.rs",
2026-07-26T22:33:02.8277645Z               "line": 391
2026-07-26T22:33:02.8277741Z             },
2026-07-26T22:33:02.8277846Z             {
2026-07-26T22:33:02.8278066Z               "path": "crates/spt-store/src/grants.rs",
2026-07-26T22:33:02.8278180Z               "line": 165
2026-07-26T22:33:02.8278284Z             },
2026-07-26T22:33:02.8278390Z             {
2026-07-26T22:33:02.8278532Z               "path": "crates/spt-store/src/grants.rs",
2026-07-26T22:33:02.8278652Z               "line": 184
2026-07-26T22:33:02.8278752Z             },
2026-07-26T22:33:02.8278856Z             {
2026-07-26T22:33:02.8279071Z               "path": "crates/spt-store/src/grants.rs",
2026-07-26T22:33:02.8279185Z               "line": 204
2026-07-26T22:33:02.8279287Z             },
2026-07-26T22:33:02.8279386Z             {
2026-07-26T22:33:02.8279509Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8279625Z               "line": 15892
2026-07-26T22:33:02.8279720Z             }
2026-07-26T22:33:02.8279823Z           ]
2026-07-26T22:33:02.8279914Z         }
2026-07-26T22:33:02.8280018Z       }
2026-07-26T22:33:02.8280116Z     },
2026-07-26T22:33:02.8280221Z     {
2026-07-26T22:33:02.8280341Z       "id": "REQ-CONSENT-2",
2026-07-26T22:33:02.8281224Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-07-26T22:33:02.8281356Z       "requiredStages": [
2026-07-26T22:33:02.8281461Z         "impl",
2026-07-26T22:33:02.8281563Z         "unit"
2026-07-26T22:33:02.8281661Z       ],
2026-07-26T22:33:02.8281776Z       "stages": {
2026-07-26T22:33:02.8281877Z         "doc": {
2026-07-26T22:33:02.8281995Z           "complete": false,
2026-07-26T22:33:02.8282100Z           "evidence": []
2026-07-26T22:33:02.8282202Z         },
2026-07-26T22:33:02.8282304Z         "impl": {
2026-07-26T22:33:02.8282425Z           "complete": true,
2026-07-26T22:33:02.8282521Z           "evidence": [
2026-07-26T22:33:02.8282629Z             {
2026-07-26T22:33:02.8282776Z               "path": "crates/spt-daemon/src/grants.rs",
2026-07-26T22:33:02.8282896Z               "line": 140
2026-07-26T22:33:02.8282986Z             },
2026-07-26T22:33:02.8283091Z             {
2026-07-26T22:33:02.8283230Z               "path": "crates/spt-daemon/src/grants.rs",
2026-07-26T22:33:02.8283339Z               "line": 165
2026-07-26T22:33:02.8283439Z             },
2026-07-26T22:33:02.8283544Z             {
2026-07-26T22:33:02.8283682Z               "path": "crates/spt-daemon/src/grants.rs",
2026-07-26T22:33:02.8283783Z               "line": 199
2026-07-26T22:33:02.8283883Z             },
2026-07-26T22:33:02.8283982Z             {
2026-07-26T22:33:02.8284122Z               "path": "crates/spt-daemon/src/grants.rs",
2026-07-26T22:33:02.8284240Z               "line": 241
2026-07-26T22:33:02.8284340Z             },
2026-07-26T22:33:02.8284442Z             {
2026-07-26T22:33:02.8284588Z               "path": "crates/spt-daemon/src/grants.rs",
2026-07-26T22:33:02.8284703Z               "line": 269
2026-07-26T22:33:02.8284803Z             },
2026-07-26T22:33:02.8284898Z             {
2026-07-26T22:33:02.8285149Z               "path": "crates/spt-daemon/src/grants.rs",
2026-07-26T22:33:02.8285262Z               "line": 300
2026-07-26T22:33:02.8285362Z             },
2026-07-26T22:33:02.8285463Z             {
2026-07-26T22:33:02.8285586Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8285691Z               "line": 12651
2026-07-26T22:33:02.8285797Z             },
2026-07-26T22:33:02.8285901Z             {
2026-07-26T22:33:02.8286030Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8286135Z               "line": 12709
2026-07-26T22:33:02.8286230Z             }
2026-07-26T22:33:02.8286321Z           ]
2026-07-26T22:33:02.8286421Z         },
2026-07-26T22:33:02.8286516Z         "int": {
2026-07-26T22:33:02.8286635Z           "complete": false,
2026-07-26T22:33:02.8286736Z           "evidence": []
2026-07-26T22:33:02.8286941Z         },
2026-07-26T22:33:02.8287046Z         "unit": {
2026-07-26T22:33:02.8287165Z           "complete": true,
2026-07-26T22:33:02.8287290Z           "evidence": [
2026-07-26T22:33:02.8287412Z             {
2026-07-26T22:33:02.8287566Z               "path": "crates/spt-daemon/src/grants.rs",
2026-07-26T22:33:02.8287685Z               "line": 419
2026-07-26T22:33:02.8287784Z             },
2026-07-26T22:33:02.8287883Z             {
2026-07-26T22:33:02.8288021Z               "path": "crates/spt-daemon/src/grants.rs",
2026-07-26T22:33:02.8288129Z               "line": 436
2026-07-26T22:33:02.8288229Z             },
2026-07-26T22:33:02.8288330Z             {
2026-07-26T22:33:02.8288472Z               "path": "crates/spt-daemon/src/grants.rs",
2026-07-26T22:33:02.8288578Z               "line": 472
2026-07-26T22:33:02.8288682Z             },
2026-07-26T22:33:02.8288777Z             {
2026-07-26T22:33:02.8288916Z               "path": "crates/spt-daemon/src/grants.rs",
2026-07-26T22:33:02.8289134Z               "line": 516
2026-07-26T22:33:02.8289236Z             },
2026-07-26T22:33:02.8289344Z             {
2026-07-26T22:33:02.8289474Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8289584Z               "line": 17432
2026-07-26T22:33:02.8289678Z             },
2026-07-26T22:33:02.8289788Z             {
2026-07-26T22:33:02.8289913Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8290036Z               "line": 17514
2026-07-26T22:33:02.8290137Z             }
2026-07-26T22:33:02.8290252Z           ]
2026-07-26T22:33:02.8290345Z         }
2026-07-26T22:33:02.8290449Z       }
2026-07-26T22:33:02.8290545Z     },
2026-07-26T22:33:02.8290644Z     {
2026-07-26T22:33:02.8290752Z       "id": "REQ-CONSENT-3",
2026-07-26T22:33:02.8292646Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-07-26T22:33:02.8296127Z       "requiredStages": [
2026-07-26T22:33:02.8296251Z         "doc",
2026-07-26T22:33:02.8296361Z         "impl",
2026-07-26T22:33:02.8296451Z         "unit",
2026-07-26T22:33:02.8296551Z         "int"
2026-07-26T22:33:02.8296633Z       ],
2026-07-26T22:33:02.8296742Z       "stages": {
2026-07-26T22:33:02.8296852Z         "doc": {
2026-07-26T22:33:02.8296971Z           "complete": true,
2026-07-26T22:33:02.8297076Z           "evidence": [
2026-07-26T22:33:02.8297176Z             {
2026-07-26T22:33:02.8297300Z               "path": "CONTEXT.md",
2026-07-26T22:33:02.8297415Z               "line": 357
2026-07-26T22:33:02.8297540Z             }
2026-07-26T22:33:02.8297639Z           ]
2026-07-26T22:33:02.8297739Z         },
2026-07-26T22:33:02.8298039Z         "impl": {
2026-07-26T22:33:02.8298150Z           "complete": true,
2026-07-26T22:33:02.8298255Z           "evidence": [
2026-07-26T22:33:02.8298353Z             {
2026-07-26T22:33:02.8298520Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:02.8298628Z               "line": 124
2026-07-26T22:33:02.8298727Z             },
2026-07-26T22:33:02.8298828Z             {
2026-07-26T22:33:02.8299065Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:02.8299176Z               "line": 163
2026-07-26T22:33:02.8299272Z             },
2026-07-26T22:33:02.8299370Z             {
2026-07-26T22:33:02.8299515Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:02.8299629Z               "line": 292
2026-07-26T22:33:02.8299719Z             },
2026-07-26T22:33:02.8299825Z             {
2026-07-26T22:33:02.8300082Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.8300187Z               "line": 734
2026-07-26T22:33:02.8300291Z             },
2026-07-26T22:33:02.8300397Z             {
2026-07-26T22:33:02.8300544Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.8300658Z               "line": 988
2026-07-26T22:33:02.8300760Z             },
2026-07-26T22:33:02.8300854Z             {
2026-07-26T22:33:02.8300981Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8301091Z               "line": 12777
2026-07-26T22:33:02.8301190Z             }
2026-07-26T22:33:02.8301289Z           ]
2026-07-26T22:33:02.8301389Z         },
2026-07-26T22:33:02.8301481Z         "int": {
2026-07-26T22:33:02.8301594Z           "complete": true,
2026-07-26T22:33:02.8301709Z           "evidence": [
2026-07-26T22:33:02.8301809Z             {
2026-07-26T22:33:02.8301971Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-07-26T22:33:02.8302081Z               "line": 16
2026-07-26T22:33:02.8302181Z             }
2026-07-26T22:33:02.8302281Z           ]
2026-07-26T22:33:02.8302382Z         },
2026-07-26T22:33:02.8302486Z         "unit": {
2026-07-26T22:33:02.8302601Z           "complete": true,
2026-07-26T22:33:02.8302711Z           "evidence": [
2026-07-26T22:33:02.8302816Z             {
2026-07-26T22:33:02.8302959Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:02.8303082Z               "line": 1191
2026-07-26T22:33:02.8303177Z             },
2026-07-26T22:33:02.8303284Z             {
2026-07-26T22:33:02.8303430Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:02.8303545Z               "line": 1238
2026-07-26T22:33:02.8303641Z             },
2026-07-26T22:33:02.8303740Z             {
2026-07-26T22:33:02.8303886Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.8304007Z               "line": 1786
2026-07-26T22:33:02.8304106Z             }
2026-07-26T22:33:02.8304206Z           ]
2026-07-26T22:33:02.8304303Z         }
2026-07-26T22:33:02.8304402Z       }
2026-07-26T22:33:02.8304502Z     },
2026-07-26T22:33:02.8304598Z     {
2026-07-26T22:33:02.8304740Z       "id": "REQ-CONTROL-STAMP-CONVERGENCE",
2026-07-26T22:33:02.8306811Z       "title": "REGISTRY-LIFECYCLE W2 (ADR-0041 decision 4, emphasys C3 P1): control-stamp writes are session/generation-VALIDATED (or per-endpoint stamp transitions serialized) so a pre-reap KIND_SESSIONS snapshot can never relatch controlled=true after the exit-waiter reap; no fs I/O under global locks (KH 7.12); every no-session path clears all three control fields (controlled/driven_by/viewer_count). Gate: impl — validated/serialized stamp transitions; unit — stale-snapshot write refused after a newer no-session truth, no-session paths clear all three; int — poll-vs-reap interleave converges to cleared stamps (the relatch regression); doc — ADR-0041.",
2026-07-26T22:33:02.8306940Z       "requiredStages": [
2026-07-26T22:33:02.8307059Z         "doc",
2026-07-26T22:33:02.8307165Z         "impl",
2026-07-26T22:33:02.8307265Z         "unit",
2026-07-26T22:33:02.8307369Z         "int"
2026-07-26T22:33:02.8307584Z       ],
2026-07-26T22:33:02.8307698Z       "stages": {
2026-07-26T22:33:02.8307804Z         "doc": {
2026-07-26T22:33:02.8307918Z           "complete": true,
2026-07-26T22:33:02.8308022Z           "evidence": [
2026-07-26T22:33:02.8308124Z             {
2026-07-26T22:33:02.8308285Z               "path": "docs/adr/0041-endpoint-lifecycle-truth.md",
2026-07-26T22:33:02.8308400Z               "line": 61
2026-07-26T22:33:02.8308504Z             }
2026-07-26T22:33:02.8308604Z           ]
2026-07-26T22:33:02.8308705Z         },
2026-07-26T22:33:02.8308810Z         "impl": {
2026-07-26T22:33:02.8308918Z           "complete": true,
2026-07-26T22:33:02.8309113Z           "evidence": [
2026-07-26T22:33:02.8309216Z             {
2026-07-26T22:33:02.8309364Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8309583Z               "line": 929
2026-07-26T22:33:02.8309688Z             },
2026-07-26T22:33:02.8309784Z             {
2026-07-26T22:33:02.8309921Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8310037Z               "line": 966
2026-07-26T22:33:02.8310136Z             },
2026-07-26T22:33:02.8310236Z             {
2026-07-26T22:33:02.8310380Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8310494Z               "line": 2278
2026-07-26T22:33:02.8310594Z             },
2026-07-26T22:33:02.8310690Z             {
2026-07-26T22:33:02.8310832Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8310933Z               "line": 4346
2026-07-26T22:33:02.8311033Z             },
2026-07-26T22:33:02.8311137Z             {
2026-07-26T22:33:02.8311267Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8311372Z               "line": 4813
2026-07-26T22:33:02.8311470Z             },
2026-07-26T22:33:02.8311579Z             {
2026-07-26T22:33:02.8311722Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8311834Z               "line": 745
2026-07-26T22:33:02.8311935Z             }
2026-07-26T22:33:02.8312031Z           ]
2026-07-26T22:33:02.8312130Z         },
2026-07-26T22:33:02.8312235Z         "int": {
2026-07-26T22:33:02.8312350Z           "complete": true,
2026-07-26T22:33:02.8312459Z           "evidence": [
2026-07-26T22:33:02.8312560Z             {
2026-07-26T22:33:02.8312737Z               "path": "crates/spt-daemon/tests/endpoint_lifecycle.rs",
2026-07-26T22:33:02.8312841Z               "line": 493
2026-07-26T22:33:02.8312942Z             }
2026-07-26T22:33:02.8313041Z           ]
2026-07-26T22:33:02.8313141Z         },
2026-07-26T22:33:02.8313243Z         "unit": {
2026-07-26T22:33:02.8313361Z           "complete": true,
2026-07-26T22:33:02.8313466Z           "evidence": [
2026-07-26T22:33:02.8313567Z             {
2026-07-26T22:33:02.8313704Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8313824Z               "line": 6236
2026-07-26T22:33:02.8313920Z             },
2026-07-26T22:33:02.8314013Z             {
2026-07-26T22:33:02.8314154Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8314263Z               "line": 1499
2026-07-26T22:33:02.8314361Z             }
2026-07-26T22:33:02.8314466Z           ]
2026-07-26T22:33:02.8314562Z         }
2026-07-26T22:33:02.8314666Z       }
2026-07-26T22:33:02.8314752Z     },
2026-07-26T22:33:02.8314858Z     {
2026-07-26T22:33:02.8314977Z       "id": "REQ-CONTROLLER-LEASE-IDENTITY",
2026-07-26T22:33:02.8323416Z       "title": "RC-RENDER-TRUTH W2 (ADR-0044 decisions 1+2, hertz same-machine --take split-brain RCA P0-A/B, doyle seam-verified broker.rs resolve_subscribe 1296-1318 + 1334-1347): each rc invocation/attach stream mints a UNIQUE controller lease id carried through SubscribeReq, the controller slot, and Input/Resize; node identity stays separate as attribution/access policy only. The ONLY silent successor/replay case is same-lease + equal-or-newer generation (ADR-0038 fix-6 dispatcher-recovery contract preserved exactly); same node + different lease = DISTINCT controller. Explicit Take on a distinct incumbent lease ALWAYS revokes loudly AND authoritatively — atomically revoke/fence the old lease and FORCE its attach stream closed, then install the taker, regardless of whether by-node strings match; the Displaced notice is best-effort (today old.tx.try_send at broker.rs:1342-1345 can DROP the notice on a Full queue while become_controller still replaces — the revoke/close must land even when notice enqueue fails; the closed stream is itself the terminal signal rc's PumpEnd::Displaced/EOF path handles). Today same_identity keys on controller_by()==by alone, intent never consulted; two same-machine windows collapse to one identity and --take silently swaps the sink leaving the incumbent input-capable but blind. Acceptable identity seam: (by, nonzero attach generation) as the logical lease. GENERATION LADDER (doyle ruling 2026-07-18, resolves fix-6/Busy conflict at T6): within the SAME by — equal gen = silent successor (dispatcher recovery, unchanged); STRICTLY NEWER gen (Control or Take) = loud+fenced supersession (full W2 revoke — without it a live replacement viewport bounces Busy off a stale-replay worker serving a zombie stream forever = post-restart lockout, fix-6 order-independence regression); OLDER gen = refused Busy (unchanged). Across DIFFERENT by: Control = Busy, Take = loud revoke. Deliberate UX: a second same-node window's plain rc loudly displaces the first (pre-W2 did the same replacement SILENTLY with the loser blind-but-interactive; loud+fenced strictly better; --view = coexistence). redispatch_stall T6 must stay green UNMODIFIED. N-1: lease field additive; absent lease (older client) degrades to legacy node-identity semantics for that subscriber. Gate: impl — lease mint + carry + loud distinct-lease Take; unit — same-lease equal/newer gen stays silent, same-node different-lease Take displaces loudly, older-gen replay still refused busy; int — hertz regression steps 1-4 + 7-8 (A gets Displaced{by} + terminal stream completion, output reaches B only, metadata identifies B, one controller slot; separate equal-lease replay test proves dispatcher recovery stays silent); doc — ADR-0044.",
2026-07-26T22:33:02.8323869Z       "requiredStages": [
2026-07-26T22:33:02.8323974Z         "doc",
2026-07-26T22:33:02.8324074Z         "impl",
2026-07-26T22:33:02.8324179Z         "unit",
2026-07-26T22:33:02.8324274Z         "int"
2026-07-26T22:33:02.8324379Z       ],
2026-07-26T22:33:02.8324480Z       "stages": {
2026-07-26T22:33:02.8324583Z         "doc": {
2026-07-26T22:33:02.8324699Z           "complete": true,
2026-07-26T22:33:02.8324804Z           "evidence": [
2026-07-26T22:33:02.8324902Z             {
2026-07-26T22:33:02.8325065Z               "path": "docs/adr/0044-controller-lease-truth.md",
2026-07-26T22:33:02.8325175Z               "line": 40
2026-07-26T22:33:02.8325269Z             }
2026-07-26T22:33:02.8325389Z           ]
2026-07-26T22:33:02.8325489Z         },
2026-07-26T22:33:02.8325593Z         "impl": {
2026-07-26T22:33:02.8325728Z           "complete": true,
2026-07-26T22:33:02.8325833Z           "evidence": [
2026-07-26T22:33:02.8325932Z             {
2026-07-26T22:33:02.8326090Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8326199Z               "line": 1494
2026-07-26T22:33:02.8326304Z             },
2026-07-26T22:33:02.8326391Z             {
2026-07-26T22:33:02.8326542Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8326649Z               "line": 1821
2026-07-26T22:33:02.8326753Z             },
2026-07-26T22:33:02.8326852Z             {
2026-07-26T22:33:02.8326997Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8327105Z               "line": 1911
2026-07-26T22:33:02.8327204Z             },
2026-07-26T22:33:02.8327304Z             {
2026-07-26T22:33:02.8327445Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8327554Z               "line": 2616
2026-07-26T22:33:02.8327655Z             },
2026-07-26T22:33:02.8327836Z             {
2026-07-26T22:33:02.8327980Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8328080Z               "line": 2698
2026-07-26T22:33:02.8328174Z             },
2026-07-26T22:33:02.8328266Z             {
2026-07-26T22:33:02.8328395Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:02.8328494Z               "line": 1156
2026-07-26T22:33:02.8328590Z             }
2026-07-26T22:33:02.8328690Z           ]
2026-07-26T22:33:02.8328794Z         },
2026-07-26T22:33:02.8328895Z         "int": {
2026-07-26T22:33:02.8329090Z           "complete": true,
2026-07-26T22:33:02.8329196Z           "evidence": [
2026-07-26T22:33:02.8329296Z             {
2026-07-26T22:33:02.8329467Z               "path": "crates/spt-daemon/tests/controller_lease.rs",
2026-07-26T22:33:02.8329573Z               "line": 256
2026-07-26T22:33:02.8329782Z             },
2026-07-26T22:33:02.8329883Z             {
2026-07-26T22:33:02.8330048Z               "path": "crates/spt-daemon/tests/controller_lease.rs",
2026-07-26T22:33:02.8330171Z               "line": 350
2026-07-26T22:33:02.8330271Z             },
2026-07-26T22:33:02.8330374Z             {
2026-07-26T22:33:02.8330537Z               "path": "crates/spt-daemon/tests/controller_lease.rs",
2026-07-26T22:33:02.8330637Z               "line": 494
2026-07-26T22:33:02.8330741Z             }
2026-07-26T22:33:02.8330843Z           ]
2026-07-26T22:33:02.8330942Z         },
2026-07-26T22:33:02.8331037Z         "unit": {
2026-07-26T22:33:02.8331148Z           "complete": true,
2026-07-26T22:33:02.8331252Z           "evidence": [
2026-07-26T22:33:02.8331356Z             {
2026-07-26T22:33:02.8331496Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8331609Z               "line": 6618
2026-07-26T22:33:02.8331704Z             },
2026-07-26T22:33:02.8331811Z             {
2026-07-26T22:33:02.8331957Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8332068Z               "line": 6669
2026-07-26T22:33:02.8332173Z             },
2026-07-26T22:33:02.8332276Z             {
2026-07-26T22:33:02.8332402Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:02.8332511Z               "line": 2494
2026-07-26T22:33:02.8332605Z             }
2026-07-26T22:33:02.8332705Z           ]
2026-07-26T22:33:02.8332805Z         }
2026-07-26T22:33:02.8332903Z       }
2026-07-26T22:33:02.8333002Z     },
2026-07-26T22:33:02.8333103Z     {
2026-07-26T22:33:02.8333242Z       "id": "REQ-CONTROLLER-LIVENESS-REAP",
2026-07-26T22:33:02.8341431Z       "title": "B-2 (REMOTE-TRUTH triage §B-2, REDUCED @bdc1242): a stale ONLINE+CONTROLLED stamp on a live-session perch self-heals — the info.json driven_by/controlled RECORD is made to match the broker's SINK-TABLE TRUTH. ROOT (persisted-stale-stamp class, doyle Q1): the livehost control reap gates on !has_session (reconcile_hosted_liveness), and a brain-only update KEEPS the session (REQ-UPD-3), so a controller stamp that went stale WHILE the session lived was never re-derived from broker truth. NOT a transport bug: (a) a persisted conn is the REQ-UPD-3 feature; (b) an idle-severed conn eventually EOFs via QUIC keepalive → handle_conn detach (path 1) — and the reason paths 1-3 previously failed to clean up was the B-1 broker floor-lock POISON WEDGE (cleanup panicked under the poisoned lock), now fixed. REDUCTION (doyle, my ground-truth): the prescription was 80% pre-built — converge_perch_stamps (broker.rs, REQ-HAZARD-CONTROL-STAMP-CONVERGENCE) ALREADY converges info.json driven_by/controlled to the broker's controller_by/has_controller on EVERY KIND_SESSIONS poll, and the livehost reconcile already TRIGGERS that poll per tick (query_live_session_endpoints). So NO new IPC query, NO new livehost arm, NO 5th detach path — the ONLY gap is that a controller whose WRITER THREAD died (severed conn: the writer failed a socket write, or a detach dropped by the prior B-1 wedge) still reports controller_by=Some/has_controller=true, so converge keeps the stale stamp. FIX: a broker-side lazy-reap in the KIND_SESSIONS snapshot closure — OutputLog::reap_dead_controller() drops a controller whose _writer.is_finished() BEFORE controller_by/has_controller are read, so the reply + the off-lock converge both see the honest (cleared) state and the stamp clears. LOCK-SAFE: the reap drops the sink in-memory ONLY (no stamp_driven_by → no info.json I/O under the log lock, the KH 7.12/5.16 lock-across-effect discipline); the OFF-lock converge_perch_stamps writes the honest stamp. KH 7.15 held by construction: the reap only ever CLEARS, never latches driven_by; a LIVE (idle, parked-on-rx.recv) controller is is_finished()==false so it is NEVER false-reaped. RESIDUAL (doyle Q2 accepted): a TRULY IDLE severed controller (writer parked on recv, no output, conn not yet EOF'd) stays is_finished()==false and converges only on output-resume / conn-EOF — that harder active-probe case is the RESERVED REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT (SessionInfo.controller_by doc), deliberately NOT built here so the reserved seed keeps its scope. Red-first: a dead-writer sink → reap clears it (controller_by honest None → converge clears the stamp); a live-writer sink → UNTOUCHED (no-false-reap control).",
2026-07-26T22:33:02.8341902Z       "requiredStages": [
2026-07-26T22:33:02.8342007Z         "impl",
2026-07-26T22:33:02.8342112Z         "unit",
2026-07-26T22:33:02.8342212Z         "int"
2026-07-26T22:33:02.8342313Z       ],
2026-07-26T22:33:02.8342422Z       "stages": {
2026-07-26T22:33:02.8342517Z         "doc": {
2026-07-26T22:33:02.8342642Z           "complete": false,
2026-07-26T22:33:02.8342747Z           "evidence": []
2026-07-26T22:33:02.8342846Z         },
2026-07-26T22:33:02.8342952Z         "impl": {
2026-07-26T22:33:02.8343071Z           "complete": true,
2026-07-26T22:33:02.8343179Z           "evidence": [
2026-07-26T22:33:02.8343279Z             {
2026-07-26T22:33:02.8343463Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8343582Z               "line": 1542
2026-07-26T22:33:02.8343678Z             }
2026-07-26T22:33:02.8343806Z           ]
2026-07-26T22:33:02.8343902Z         },
2026-07-26T22:33:02.8344002Z         "int": {
2026-07-26T22:33:02.8344116Z           "complete": true,
2026-07-26T22:33:02.8344231Z           "evidence": [
2026-07-26T22:33:02.8344326Z             {
2026-07-26T22:33:02.8344478Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:02.8344585Z               "line": 991
2026-07-26T22:33:02.8344688Z             }
2026-07-26T22:33:02.8344788Z           ]
2026-07-26T22:33:02.8344884Z         },
2026-07-26T22:33:02.8344984Z         "unit": {
2026-07-26T22:33:02.8345098Z           "complete": true,
2026-07-26T22:33:02.8345209Z           "evidence": [
2026-07-26T22:33:02.8345299Z             {
2026-07-26T22:33:02.8345447Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8345553Z               "line": 8575
2026-07-26T22:33:02.8345656Z             },
2026-07-26T22:33:02.8345757Z             {
2026-07-26T22:33:02.8345900Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8346018Z               "line": 8670
2026-07-26T22:33:02.8346113Z             }
2026-07-26T22:33:02.8346213Z           ]
2026-07-26T22:33:02.8346309Z         }
2026-07-26T22:33:02.8346408Z       }
2026-07-26T22:33:02.8346509Z     },
2026-07-26T22:33:02.8346609Z     {
2026-07-26T22:33:02.8346723Z       "id": "REQ-CONV-1",
2026-07-26T22:33:02.8348141Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-07-26T22:33:02.8348263Z       "requiredStages": [
2026-07-26T22:33:02.8348362Z         "impl",
2026-07-26T22:33:02.8348561Z         "unit"
2026-07-26T22:33:02.8348660Z       ],
2026-07-26T22:33:02.8348761Z       "stages": {
2026-07-26T22:33:02.8348858Z         "doc": {
2026-07-26T22:33:02.8349052Z           "complete": false,
2026-07-26T22:33:02.8349157Z           "evidence": []
2026-07-26T22:33:02.8349256Z         },
2026-07-26T22:33:02.8349357Z         "impl": {
2026-07-26T22:33:02.8349467Z           "complete": true,
2026-07-26T22:33:02.8349571Z           "evidence": [
2026-07-26T22:33:02.8349667Z             {
2026-07-26T22:33:02.8349805Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.8349909Z               "line": 1199
2026-07-26T22:33:02.8350011Z             },
2026-07-26T22:33:02.8350111Z             {
2026-07-26T22:33:02.8350253Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.8350364Z               "line": 676
2026-07-26T22:33:02.8350553Z             },
2026-07-26T22:33:02.8350655Z             {
2026-07-26T22:33:02.8350806Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.8350921Z               "line": 895
2026-07-26T22:33:02.8351018Z             },
2026-07-26T22:33:02.8351107Z             {
2026-07-26T22:33:02.8351258Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.8351368Z               "line": 1645
2026-07-26T22:33:02.8351466Z             },
2026-07-26T22:33:02.8351570Z             {
2026-07-26T22:33:02.8351724Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:02.8351823Z               "line": 94
2026-07-26T22:33:02.8351929Z             },
2026-07-26T22:33:02.8352029Z             {
2026-07-26T22:33:02.8352176Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:02.8352277Z               "line": 345
2026-07-26T22:33:02.8352372Z             },
2026-07-26T22:33:02.8352467Z             {
2026-07-26T22:33:02.8352611Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:02.8352725Z               "line": 387
2026-07-26T22:33:02.8352825Z             },
2026-07-26T22:33:02.8352936Z             {
2026-07-26T22:33:02.8353077Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:02.8353188Z               "line": 627
2026-07-26T22:33:02.8353293Z             },
2026-07-26T22:33:02.8353397Z             {
2026-07-26T22:33:02.8353541Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:02.8353654Z               "line": 1049
2026-07-26T22:33:02.8353786Z             },
2026-07-26T22:33:02.8353887Z             {
2026-07-26T22:33:02.8354037Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:02.8354142Z               "line": 552
2026-07-26T22:33:02.8354243Z             },
2026-07-26T22:33:02.8354342Z             {
2026-07-26T22:33:02.8354485Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-07-26T22:33:02.8354586Z               "line": 33
2026-07-26T22:33:02.8354695Z             }
2026-07-26T22:33:02.8354796Z           ]
2026-07-26T22:33:02.8354901Z         },
2026-07-26T22:33:02.8355019Z         "int": {
2026-07-26T22:33:02.8355140Z           "complete": false,
2026-07-26T22:33:02.8355258Z           "evidence": []
2026-07-26T22:33:02.8355358Z         },
2026-07-26T22:33:02.8355469Z         "unit": {
2026-07-26T22:33:02.8355587Z           "complete": true,
2026-07-26T22:33:02.8355692Z           "evidence": [
2026-07-26T22:33:02.8355793Z             {
2026-07-26T22:33:02.8355944Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:02.8356055Z               "line": 1875
2026-07-26T22:33:02.8356165Z             },
2026-07-26T22:33:02.8356264Z             {
2026-07-26T22:33:02.8356418Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-07-26T22:33:02.8356531Z               "line": 208
2026-07-26T22:33:02.8356630Z             },
2026-07-26T22:33:02.8356730Z             {
2026-07-26T22:33:02.8356888Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-07-26T22:33:02.8356987Z               "line": 234
2026-07-26T22:33:02.8357093Z             },
2026-07-26T22:33:02.8357297Z             {
2026-07-26T22:33:02.8357442Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-07-26T22:33:02.8357555Z               "line": 244
2026-07-26T22:33:02.8357656Z             }
2026-07-26T22:33:02.8357756Z           ]
2026-07-26T22:33:02.8357866Z         }
2026-07-26T22:33:02.8357955Z       }
2026-07-26T22:33:02.8358052Z     },
2026-07-26T22:33:02.8358151Z     {
2026-07-26T22:33:02.8358265Z       "id": "REQ-CONV-2",
2026-07-26T22:33:02.8359492Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-07-26T22:33:02.8359736Z       "requiredStages": [
2026-07-26T22:33:02.8359835Z         "impl",
2026-07-26T22:33:02.8359932Z         "unit"
2026-07-26T22:33:02.8360041Z       ],
2026-07-26T22:33:02.8360145Z       "stages": {
2026-07-26T22:33:02.8360252Z         "doc": {
2026-07-26T22:33:02.8360370Z           "complete": false,
2026-07-26T22:33:02.8360484Z           "evidence": []
2026-07-26T22:33:02.8360585Z         },
2026-07-26T22:33:02.8360685Z         "impl": {
2026-07-26T22:33:02.8360789Z           "complete": true,
2026-07-26T22:33:02.8360896Z           "evidence": [
2026-07-26T22:33:02.8360990Z             {
2026-07-26T22:33:02.8361152Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.8361253Z               "line": 820
2026-07-26T22:33:02.8361361Z             },
2026-07-26T22:33:02.8361457Z             {
2026-07-26T22:33:02.8361620Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-07-26T22:33:02.8361728Z               "line": 119
2026-07-26T22:33:02.8361842Z             },
2026-07-26T22:33:02.8361947Z             {
2026-07-26T22:33:02.8362107Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:02.8362217Z               "line": 1174
2026-07-26T22:33:02.8362322Z             },
2026-07-26T22:33:02.8362417Z             {
2026-07-26T22:33:02.8362575Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:02.8362688Z               "line": 1185
2026-07-26T22:33:02.8362789Z             },
2026-07-26T22:33:02.8362890Z             {
2026-07-26T22:33:02.8363036Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:02.8363142Z               "line": 440
2026-07-26T22:33:02.8363246Z             },
2026-07-26T22:33:02.8363351Z             {
2026-07-26T22:33:02.8363486Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8363599Z               "line": 7246
2026-07-26T22:33:02.8363700Z             },
2026-07-26T22:33:02.8363796Z             {
2026-07-26T22:33:02.8363942Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8364048Z               "line": 7262
2026-07-26T22:33:02.8364159Z             },
2026-07-26T22:33:02.8364262Z             {
2026-07-26T22:33:02.8364395Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8364504Z               "line": 7417
2026-07-26T22:33:02.8364631Z             }
2026-07-26T22:33:02.8364731Z           ]
2026-07-26T22:33:02.8364842Z         },
2026-07-26T22:33:02.8364936Z         "int": {
2026-07-26T22:33:02.8365060Z           "complete": false,
2026-07-26T22:33:02.8365175Z           "evidence": []
2026-07-26T22:33:02.8365279Z         },
2026-07-26T22:33:02.8365390Z         "unit": {
2026-07-26T22:33:02.8365514Z           "complete": true,
2026-07-26T22:33:02.8365618Z           "evidence": [
2026-07-26T22:33:02.8365719Z             {
2026-07-26T22:33:02.8365856Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:02.8365970Z               "line": 1341
2026-07-26T22:33:02.8366072Z             },
2026-07-26T22:33:02.8366171Z             {
2026-07-26T22:33:02.8366324Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:02.8366557Z               "line": 1466
2026-07-26T22:33:02.8366663Z             },
2026-07-26T22:33:02.8366762Z             {
2026-07-26T22:33:02.8366935Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-07-26T22:33:02.8367040Z               "line": 224
2026-07-26T22:33:02.8367176Z             }
2026-07-26T22:33:02.8367285Z           ]
2026-07-26T22:33:02.8367396Z         }
2026-07-26T22:33:02.8367500Z       }
2026-07-26T22:33:02.8367600Z     },
2026-07-26T22:33:02.8367697Z     {
2026-07-26T22:33:02.8367824Z       "id": "REQ-CRC-SWAP-OLD-DISPLACE",
2026-07-26T22:33:02.8370706Z       "title": "C1 (F028, infra; memory crc-swap-old-litter-brick, RCA'd ENLYZEAM + confirmed systemic): crc_swap `.old`-litter bricks every subsequent adapter update. apply_crc_swap Phase-3 `let _ = remove_file(.old)` (spt-daemon/src/crc_swap.rs:129-133) silently fails whenever ANY pre-update process still image-maps the old binary (NORMAL on a live box — endpoint launch children survive updates). The NEXT update's first commit-op rename(exe->exe.old) = MoveFileExW(REPLACE_EXISTING) must delete the mapped .old -> win32 err 5 -> whole apply fails + rolls back FOREVER, context-free. FIX: (i) DISPLACE not replace — when <target>.old exists, rename it aside to a unique suffix (rename succeeds on mapped files; spt's own updater already does spt.exe.old-<counter>); GC stale .old.* opportunistically. (ii) Wrap swap io errors with op + path (`rename claude-spt.exe -> claude-spt.exe.old: …`). Unit seam exists (crc_swap tests). See triage C1.",
2026-07-26T22:33:02.8370959Z       "requiredStages": [
2026-07-26T22:33:02.8371073Z         "impl",
2026-07-26T22:33:02.8371169Z         "unit"
2026-07-26T22:33:02.8371273Z       ],
2026-07-26T22:33:02.8371378Z       "stages": {
2026-07-26T22:33:02.8371475Z         "doc": {
2026-07-26T22:33:02.8371588Z           "complete": false,
2026-07-26T22:33:02.8371722Z           "evidence": []
2026-07-26T22:33:02.8371818Z         },
2026-07-26T22:33:02.8371926Z         "impl": {
2026-07-26T22:33:02.8372071Z           "complete": true,
2026-07-26T22:33:02.8372227Z           "evidence": [
2026-07-26T22:33:02.8372326Z             {
2026-07-26T22:33:02.8372483Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-07-26T22:33:02.8372596Z               "line": 107
2026-07-26T22:33:02.8372695Z             },
2026-07-26T22:33:02.8372787Z             {
2026-07-26T22:33:02.8372934Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-07-26T22:33:02.8373039Z               "line": 117
2026-07-26T22:33:02.8373149Z             },
2026-07-26T22:33:02.8373239Z             {
2026-07-26T22:33:02.8373397Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-07-26T22:33:02.8373512Z               "line": 131
2026-07-26T22:33:02.8373615Z             },
2026-07-26T22:33:02.8373722Z             {
2026-07-26T22:33:02.8373888Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-07-26T22:33:02.8374008Z               "line": 200
2026-07-26T22:33:02.8374103Z             },
2026-07-26T22:33:02.8374198Z             {
2026-07-26T22:33:02.8374346Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-07-26T22:33:02.8374464Z               "line": 219
2026-07-26T22:33:02.8374565Z             },
2026-07-26T22:33:02.8374666Z             {
2026-07-26T22:33:02.8374817Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-07-26T22:33:02.8374930Z               "line": 248
2026-07-26T22:33:02.8375041Z             }
2026-07-26T22:33:02.8375148Z           ]
2026-07-26T22:33:02.8375247Z         },
2026-07-26T22:33:02.8375349Z         "int": {
2026-07-26T22:33:02.8375463Z           "complete": false,
2026-07-26T22:33:02.8375582Z           "evidence": []
2026-07-26T22:33:02.8375687Z         },
2026-07-26T22:33:02.8375796Z         "unit": {
2026-07-26T22:33:02.8375916Z           "complete": true,
2026-07-26T22:33:02.8376030Z           "evidence": [
2026-07-26T22:33:02.8376139Z             {
2026-07-26T22:33:02.8376289Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-07-26T22:33:02.8376502Z               "line": 432
2026-07-26T22:33:02.8376599Z             },
2026-07-26T22:33:02.8376697Z             {
2026-07-26T22:33:02.8376850Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-07-26T22:33:02.8376961Z               "line": 539
2026-07-26T22:33:02.8377060Z             },
2026-07-26T22:33:02.8377160Z             {
2026-07-26T22:33:02.8377304Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-07-26T22:33:02.8377418Z               "line": 589
2026-07-26T22:33:02.8377519Z             },
2026-07-26T22:33:02.8377619Z             {
2026-07-26T22:33:02.8377765Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-07-26T22:33:02.8377865Z               "line": 638
2026-07-26T22:33:02.8377975Z             },
2026-07-26T22:33:02.8378079Z             {
2026-07-26T22:33:02.8378233Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-07-26T22:33:02.8378436Z               "line": 669
2026-07-26T22:33:02.8378538Z             }
2026-07-26T22:33:02.8378643Z           ]
2026-07-26T22:33:02.8378742Z         }
2026-07-26T22:33:02.8378844Z       }
2026-07-26T22:33:02.8379009Z     },
2026-07-26T22:33:02.8379100Z     {
2026-07-26T22:33:02.8379215Z       "id": "REQ-DAEMON-1",
2026-07-26T22:33:02.8379415Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-07-26T22:33:02.8379534Z       "requiredStages": [
2026-07-26T22:33:02.8379634Z         "impl",
2026-07-26T22:33:02.8379744Z         "unit",
2026-07-26T22:33:02.8379840Z         "int"
2026-07-26T22:33:02.8379939Z       ],
2026-07-26T22:33:02.8380043Z       "stages": {
2026-07-26T22:33:02.8380152Z         "doc": {
2026-07-26T22:33:02.8380265Z           "complete": false,
2026-07-26T22:33:02.8380374Z           "evidence": []
2026-07-26T22:33:02.8380475Z         },
2026-07-26T22:33:02.8380575Z         "impl": {
2026-07-26T22:33:02.8380703Z           "complete": true,
2026-07-26T22:33:02.8380828Z           "evidence": [
2026-07-26T22:33:02.8380932Z             {
2026-07-26T22:33:02.8381095Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.8381195Z               "line": 258
2026-07-26T22:33:02.8381303Z             },
2026-07-26T22:33:02.8381405Z             {
2026-07-26T22:33:02.8381547Z               "path": "crates/spt-daemon/src/config.rs",
2026-07-26T22:33:02.8381667Z               "line": 12
2026-07-26T22:33:02.8381767Z             },
2026-07-26T22:33:02.8381872Z             {
2026-07-26T22:33:02.8382021Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.8382134Z               "line": 18
2026-07-26T22:33:02.8382239Z             },
2026-07-26T22:33:02.8382340Z             {
2026-07-26T22:33:02.8382487Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.8382602Z               "line": 699
2026-07-26T22:33:02.8382698Z             },
2026-07-26T22:33:02.8382811Z             {
2026-07-26T22:33:02.8382958Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8383076Z               "line": 24
2026-07-26T22:33:02.8383184Z             },
2026-07-26T22:33:02.8383289Z             {
2026-07-26T22:33:02.8383438Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8383551Z               "line": 144
2026-07-26T22:33:02.8383652Z             },
2026-07-26T22:33:02.8383757Z             {
2026-07-26T22:33:02.8383904Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8384024Z               "line": 161
2026-07-26T22:33:02.8384119Z             },
2026-07-26T22:33:02.8384219Z             {
2026-07-26T22:33:02.8384358Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8384476Z               "line": 632
2026-07-26T22:33:02.8384578Z             },
2026-07-26T22:33:02.8384687Z             {
2026-07-26T22:33:02.8384829Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8384954Z               "line": 1139
2026-07-26T22:33:02.8385057Z             },
2026-07-26T22:33:02.8385164Z             {
2026-07-26T22:33:02.8385415Z               "path": "crates/spt-daemon/src/relay.rs",
2026-07-26T22:33:02.8385529Z               "line": 15
2026-07-26T22:33:02.8385634Z             },
2026-07-26T22:33:02.8385732Z             {
2026-07-26T22:33:02.8385875Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.8385995Z               "line": 326
2026-07-26T22:33:02.8386094Z             },
2026-07-26T22:33:02.8386195Z             {
2026-07-26T22:33:02.8386333Z               "path": "crates/spt/src/api/live.rs",
2026-07-26T22:33:02.8386442Z               "line": 13
2026-07-26T22:33:02.8386548Z             },
2026-07-26T22:33:02.8386648Z             {
2026-07-26T22:33:02.8386796Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.8386905Z               "line": 738
2026-07-26T22:33:02.8387010Z             },
2026-07-26T22:33:02.8387202Z             {
2026-07-26T22:33:02.8387348Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.8387450Z               "line": 889
2026-07-26T22:33:02.8387568Z             }
2026-07-26T22:33:02.8387663Z           ]
2026-07-26T22:33:02.8387769Z         },
2026-07-26T22:33:02.8387869Z         "int": {
2026-07-26T22:33:02.8387992Z           "complete": true,
2026-07-26T22:33:02.8388103Z           "evidence": [
2026-07-26T22:33:02.8388212Z             {
2026-07-26T22:33:02.8388411Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-07-26T22:33:02.8388531Z               "line": 2
2026-07-26T22:33:02.8388630Z             },
2026-07-26T22:33:02.8388740Z             {
2026-07-26T22:33:02.8389031Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-07-26T22:33:02.8389145Z               "line": 21
2026-07-26T22:33:02.8389231Z             },
2026-07-26T22:33:02.8389336Z             {
2026-07-26T22:33:02.8389503Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-07-26T22:33:02.8389622Z               "line": 12
2026-07-26T22:33:02.8389723Z             },
2026-07-26T22:33:02.8389827Z             {
2026-07-26T22:33:02.8389985Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-07-26T22:33:02.8390094Z               "line": 12
2026-07-26T22:33:02.8390199Z             }
2026-07-26T22:33:02.8390299Z           ]
2026-07-26T22:33:02.8390405Z         },
2026-07-26T22:33:02.8390508Z         "unit": {
2026-07-26T22:33:02.8390617Z           "complete": true,
2026-07-26T22:33:02.8390731Z           "evidence": [
2026-07-26T22:33:02.8390825Z             {
2026-07-26T22:33:02.8390977Z               "path": "crates/spt-daemon/src/config.rs",
2026-07-26T22:33:02.8391088Z               "line": 358
2026-07-26T22:33:02.8391197Z             },
2026-07-26T22:33:02.8391287Z             {
2026-07-26T22:33:02.8391431Z               "path": "crates/spt-daemon/src/config.rs",
2026-07-26T22:33:02.8391554Z               "line": 366
2026-07-26T22:33:02.8391660Z             },
2026-07-26T22:33:02.8391746Z             {
2026-07-26T22:33:02.8391893Z               "path": "crates/spt-daemon/src/config.rs",
2026-07-26T22:33:02.8392008Z               "line": 382
2026-07-26T22:33:02.8392107Z             },
2026-07-26T22:33:02.8392217Z             {
2026-07-26T22:33:02.8392360Z               "path": "crates/spt-daemon/src/config.rs",
2026-07-26T22:33:02.8392475Z               "line": 390
2026-07-26T22:33:02.8392571Z             },
2026-07-26T22:33:02.8392675Z             {
2026-07-26T22:33:02.8392832Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.8392947Z               "line": 1571
2026-07-26T22:33:02.8393047Z             },
2026-07-26T22:33:02.8393152Z             {
2026-07-26T22:33:02.8393291Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.8393460Z               "line": 2300
2026-07-26T22:33:02.8393608Z             },
2026-07-26T22:33:02.8393777Z             {
2026-07-26T22:33:02.8394031Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8394208Z               "line": 1917
2026-07-26T22:33:02.8394541Z             },
2026-07-26T22:33:02.8394693Z             {
2026-07-26T22:33:02.8394927Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8395060Z               "line": 1954
2026-07-26T22:33:02.8395161Z             },
2026-07-26T22:33:02.8395266Z             {
2026-07-26T22:33:02.8395419Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8395538Z               "line": 1977
2026-07-26T22:33:02.8395637Z             },
2026-07-26T22:33:02.8395748Z             {
2026-07-26T22:33:02.8395895Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8396013Z               "line": 2006
2026-07-26T22:33:02.8396104Z             },
2026-07-26T22:33:02.8396212Z             {
2026-07-26T22:33:02.8396354Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8396583Z               "line": 2054
2026-07-26T22:33:02.8396678Z             },
2026-07-26T22:33:02.8396813Z             {
2026-07-26T22:33:02.8397046Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8397169Z               "line": 2097
2026-07-26T22:33:02.8397264Z             },
2026-07-26T22:33:02.8397371Z             {
2026-07-26T22:33:02.8397522Z               "path": "crates/spt-daemon/src/relay.rs",
2026-07-26T22:33:02.8397680Z               "line": 119
2026-07-26T22:33:02.8397857Z             },
2026-07-26T22:33:02.8397980Z             {
2026-07-26T22:33:02.8398137Z               "path": "crates/spt-daemon/src/relay.rs",
2026-07-26T22:33:02.8398247Z               "line": 179
2026-07-26T22:33:02.8398353Z             },
2026-07-26T22:33:02.8398443Z             {
2026-07-26T22:33:02.8398581Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.8398692Z               "line": 879
2026-07-26T22:33:02.8398795Z             }
2026-07-26T22:33:02.8398904Z           ]
2026-07-26T22:33:02.8399096Z         }
2026-07-26T22:33:02.8399190Z       }
2026-07-26T22:33:02.8399291Z     },
2026-07-26T22:33:02.8399391Z     {
2026-07-26T22:33:02.8399552Z       "id": "REQ-DAEMON-2",
2026-07-26T22:33:02.8399800Z       "title": "Broker/brain split for seamless self-update",
2026-07-26T22:33:02.8403790Z       "requiredStages": [
2026-07-26T22:33:02.8403945Z         "impl",
2026-07-26T22:33:02.8404054Z         "unit",
2026-07-26T22:33:02.8404154Z         "int"
2026-07-26T22:33:02.8404267Z       ],
2026-07-26T22:33:02.8404371Z       "stages": {
2026-07-26T22:33:02.8404477Z         "doc": {
2026-07-26T22:33:02.8404596Z           "complete": true,
2026-07-26T22:33:02.8404719Z           "evidence": [
2026-07-26T22:33:02.8404820Z             {
2026-07-26T22:33:02.8404972Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-07-26T22:33:02.8405092Z               "line": 375
2026-07-26T22:33:02.8405192Z             }
2026-07-26T22:33:02.8405296Z           ]
2026-07-26T22:33:02.8405421Z         },
2026-07-26T22:33:02.8405525Z         "impl": {
2026-07-26T22:33:02.8405644Z           "complete": true,
2026-07-26T22:33:02.8405764Z           "evidence": [
2026-07-26T22:33:02.8405863Z             {
2026-07-26T22:33:02.8406003Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.8406108Z               "line": 23
2026-07-26T22:33:02.8406212Z             },
2026-07-26T22:33:02.8406313Z             {
2026-07-26T22:33:02.8406460Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.8406578Z               "line": 1205
2026-07-26T22:33:02.8406678Z             },
2026-07-26T22:33:02.8406782Z             {
2026-07-26T22:33:02.8406923Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.8407029Z               "line": 1276
2026-07-26T22:33:02.8407125Z             },
2026-07-26T22:33:02.8407228Z             {
2026-07-26T22:33:02.8407373Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.8407486Z               "line": 1814
2026-07-26T22:33:02.8407586Z             },
2026-07-26T22:33:02.8407692Z             {
2026-07-26T22:33:02.8407839Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8408130Z               "line": 32
2026-07-26T22:33:02.8408230Z             },
2026-07-26T22:33:02.8408331Z             {
2026-07-26T22:33:02.8408482Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8408603Z               "line": 3766
2026-07-26T22:33:02.8408707Z             },
2026-07-26T22:33:02.8408812Z             {
2026-07-26T22:33:02.8409041Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8409151Z               "line": 5287
2026-07-26T22:33:02.8409257Z             },
2026-07-26T22:33:02.8409355Z             {
2026-07-26T22:33:02.8409502Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8409603Z               "line": 5881
2026-07-26T22:33:02.8409712Z             },
2026-07-26T22:33:02.8409812Z             {
2026-07-26T22:33:02.8410060Z               "path": "crates/spt-daemon/src/codec.rs",
2026-07-26T22:33:02.8410171Z               "line": 11
2026-07-26T22:33:02.8410284Z             },
2026-07-26T22:33:02.8410384Z             {
2026-07-26T22:33:02.8410524Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8410627Z               "line": 167
2026-07-26T22:33:02.8410737Z             },
2026-07-26T22:33:02.8410833Z             {
2026-07-26T22:33:02.8410976Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8411085Z               "line": 401
2026-07-26T22:33:02.8411196Z             },
2026-07-26T22:33:02.8411290Z             {
2026-07-26T22:33:02.8411434Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.8411544Z               "line": 13
2026-07-26T22:33:02.8411647Z             },
2026-07-26T22:33:02.8411752Z             {
2026-07-26T22:33:02.8411908Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.8412026Z               "line": 27
2026-07-26T22:33:02.8412122Z             },
2026-07-26T22:33:02.8412209Z             {
2026-07-26T22:33:02.8412355Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.8412475Z               "line": 361
2026-07-26T22:33:02.8412579Z             },
2026-07-26T22:33:02.8412679Z             {
2026-07-26T22:33:02.8412823Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.8412927Z               "line": 1230
2026-07-26T22:33:02.8413028Z             },
2026-07-26T22:33:02.8413137Z             {
2026-07-26T22:33:02.8413280Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.8413396Z               "line": 1507
2026-07-26T22:33:02.8413485Z             },
2026-07-26T22:33:02.8413595Z             {
2026-07-26T22:33:02.8413735Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.8413842Z               "line": 1703
2026-07-26T22:33:02.8413938Z             },
2026-07-26T22:33:02.8414040Z             {
2026-07-26T22:33:02.8414196Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.8414316Z               "line": 1815
2026-07-26T22:33:02.8414416Z             },
2026-07-26T22:33:02.8414519Z             {
2026-07-26T22:33:02.8414662Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.8414779Z               "line": 2090
2026-07-26T22:33:02.8414879Z             },
2026-07-26T22:33:02.8414989Z             {
2026-07-26T22:33:02.8415132Z               "path": "crates/spt-daemon/src/transport.rs",
2026-07-26T22:33:02.8415246Z               "line": 10
2026-07-26T22:33:02.8415337Z             }
2026-07-26T22:33:02.8415442Z           ]
2026-07-26T22:33:02.8415541Z         },
2026-07-26T22:33:02.8415648Z         "int": {
2026-07-26T22:33:02.8415762Z           "complete": true,
2026-07-26T22:33:02.8415875Z           "evidence": [
2026-07-26T22:33:02.8415967Z             {
2026-07-26T22:33:02.8416128Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-07-26T22:33:02.8416234Z               "line": 17
2026-07-26T22:33:02.8416339Z             },
2026-07-26T22:33:02.8416443Z             {
2026-07-26T22:33:02.8416710Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-07-26T22:33:02.8416820Z               "line": 91
2026-07-26T22:33:02.8416917Z             },
2026-07-26T22:33:02.8417015Z             {
2026-07-26T22:33:02.8417176Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-07-26T22:33:02.8417286Z               "line": 111
2026-07-26T22:33:02.8417379Z             },
2026-07-26T22:33:02.8417488Z             {
2026-07-26T22:33:02.8417637Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-07-26T22:33:02.8417751Z               "line": 191
2026-07-26T22:33:02.8417861Z             },
2026-07-26T22:33:02.8417961Z             {
2026-07-26T22:33:02.8418103Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-07-26T22:33:02.8418219Z               "line": 318
2026-07-26T22:33:02.8418319Z             },
2026-07-26T22:33:02.8418506Z             {
2026-07-26T22:33:02.8418647Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-07-26T22:33:02.8418771Z               "line": 139
2026-07-26T22:33:02.8418868Z             },
2026-07-26T22:33:02.8419057Z             {
2026-07-26T22:33:02.8419211Z               "path": "crates/spt/tests/brain_survive.rs",
2026-07-26T22:33:02.8419330Z               "line": 59
2026-07-26T22:33:02.8419430Z             }
2026-07-26T22:33:02.8419535Z           ]
2026-07-26T22:33:02.8419634Z         },
2026-07-26T22:33:02.8419740Z         "unit": {
2026-07-26T22:33:02.8419855Z           "complete": true,
2026-07-26T22:33:02.8419962Z           "evidence": [
2026-07-26T22:33:02.8420062Z             {
2026-07-26T22:33:02.8420207Z               "path": "crates/spt-daemon/src/codec.rs",
2026-07-26T22:33:02.8420315Z               "line": 62
2026-07-26T22:33:02.8420416Z             },
2026-07-26T22:33:02.8420516Z             {
2026-07-26T22:33:02.8420653Z               "path": "crates/spt-daemon/src/codec.rs",
2026-07-26T22:33:02.8420764Z               "line": 76
2026-07-26T22:33:02.8420864Z             },
2026-07-26T22:33:02.8420963Z             {
2026-07-26T22:33:02.8421108Z               "path": "crates/spt-daemon/src/codec.rs",
2026-07-26T22:33:02.8421207Z               "line": 88
2026-07-26T22:33:02.8421321Z             },
2026-07-26T22:33:02.8421423Z             {
2026-07-26T22:33:02.8421565Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:02.8421675Z               "line": 617
2026-07-26T22:33:02.8421780Z             },
2026-07-26T22:33:02.8421879Z             {
2026-07-26T22:33:02.8422023Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.8422127Z               "line": 1394
2026-07-26T22:33:02.8422231Z             },
2026-07-26T22:33:02.8422327Z             {
2026-07-26T22:33:02.8422473Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.8422586Z               "line": 1479
2026-07-26T22:33:02.8422687Z             },
2026-07-26T22:33:02.8422783Z             {
2026-07-26T22:33:02.8422920Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.8423035Z               "line": 1496
2026-07-26T22:33:02.8423130Z             },
2026-07-26T22:33:02.8423235Z             {
2026-07-26T22:33:02.8423373Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.8423492Z               "line": 1627
2026-07-26T22:33:02.8423593Z             },
2026-07-26T22:33:02.8423693Z             {
2026-07-26T22:33:02.8423840Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.8423960Z               "line": 2237
2026-07-26T22:33:02.8424050Z             },
2026-07-26T22:33:02.8424150Z             {
2026-07-26T22:33:02.8424299Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.8424407Z               "line": 2305
2026-07-26T22:33:02.8424508Z             },
2026-07-26T22:33:02.8424610Z             {
2026-07-26T22:33:02.8424756Z               "path": "crates/spt-daemon/src/transport.rs",
2026-07-26T22:33:02.8424867Z               "line": 110
2026-07-26T22:33:02.8424962Z             },
2026-07-26T22:33:02.8425174Z             {
2026-07-26T22:33:02.8425317Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-07-26T22:33:02.8425429Z               "line": 147
2026-07-26T22:33:02.8425530Z             }
2026-07-26T22:33:02.8425635Z           ]
2026-07-26T22:33:02.8425739Z         }
2026-07-26T22:33:02.8425835Z       }
2026-07-26T22:33:02.8425926Z     },
2026-07-26T22:33:02.8426030Z     {
2026-07-26T22:33:02.8426150Z       "id": "REQ-DAEMON-3",
2026-07-26T22:33:02.8426322Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-07-26T22:33:02.8426445Z       "requiredStages": [
2026-07-26T22:33:02.8426546Z         "impl",
2026-07-26T22:33:02.8426641Z         "unit",
2026-07-26T22:33:02.8426750Z         "int"
2026-07-26T22:33:02.8426852Z       ],
2026-07-26T22:33:02.8426955Z       "stages": {
2026-07-26T22:33:02.8427056Z         "doc": {
2026-07-26T22:33:02.8427279Z           "complete": false,
2026-07-26T22:33:02.8427380Z           "evidence": []
2026-07-26T22:33:02.8427472Z         },
2026-07-26T22:33:02.8427580Z         "impl": {
2026-07-26T22:33:02.8427702Z           "complete": true,
2026-07-26T22:33:02.8427813Z           "evidence": [
2026-07-26T22:33:02.8427920Z             {
2026-07-26T22:33:02.8428072Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8428188Z               "line": 14
2026-07-26T22:33:02.8428283Z             },
2026-07-26T22:33:02.8428392Z             {
2026-07-26T22:33:02.8428531Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-07-26T22:33:02.8428635Z               "line": 11
2026-07-26T22:33:02.8428736Z             },
2026-07-26T22:33:02.8428836Z             {
2026-07-26T22:33:02.8429027Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:02.8429131Z               "line": 345
2026-07-26T22:33:02.8429232Z             },
2026-07-26T22:33:02.8429331Z             {
2026-07-26T22:33:02.8429470Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8429584Z               "line": 4233
2026-07-26T22:33:02.8429700Z             },
2026-07-26T22:33:02.8429799Z             {
2026-07-26T22:33:02.8429937Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8430048Z               "line": 8630
2026-07-26T22:33:02.8430151Z             },
2026-07-26T22:33:02.8430256Z             {
2026-07-26T22:33:02.8430391Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8430504Z               "line": 8651
2026-07-26T22:33:02.8430608Z             }
2026-07-26T22:33:02.8430704Z           ]
2026-07-26T22:33:02.8430809Z         },
2026-07-26T22:33:02.8430908Z         "int": {
2026-07-26T22:33:02.8431029Z           "complete": true,
2026-07-26T22:33:02.8431133Z           "evidence": [
2026-07-26T22:33:02.8431232Z             {
2026-07-26T22:33:02.8431377Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-07-26T22:33:02.8431490Z               "line": 49
2026-07-26T22:33:02.8431600Z             },
2026-07-26T22:33:02.8431696Z             {
2026-07-26T22:33:02.8431843Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-07-26T22:33:02.8431958Z               "line": 477
2026-07-26T22:33:02.8432058Z             }
2026-07-26T22:33:02.8432167Z           ]
2026-07-26T22:33:02.8432269Z         },
2026-07-26T22:33:02.8432368Z         "unit": {
2026-07-26T22:33:02.8432482Z           "complete": true,
2026-07-26T22:33:02.8432593Z           "evidence": [
2026-07-26T22:33:02.8432697Z             {
2026-07-26T22:33:02.8432848Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8432953Z               "line": 1857
2026-07-26T22:33:02.8433052Z             },
2026-07-26T22:33:02.8433156Z             {
2026-07-26T22:33:02.8433295Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8433408Z               "line": 19287
2026-07-26T22:33:02.8433509Z             }
2026-07-26T22:33:02.8433610Z           ]
2026-07-26T22:33:02.8433719Z         }
2026-07-26T22:33:02.8433813Z       }
2026-07-26T22:33:02.8433920Z     },
2026-07-26T22:33:02.8434015Z     {
2026-07-26T22:33:02.8434239Z       "id": "REQ-DAEMON-4",
2026-07-26T22:33:02.8434395Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-07-26T22:33:02.8434516Z       "requiredStages": [
2026-07-26T22:33:02.8434619Z         "impl",
2026-07-26T22:33:02.8434720Z         "unit",
2026-07-26T22:33:02.8434821Z         "int"
2026-07-26T22:33:02.8434934Z       ],
2026-07-26T22:33:02.8435034Z       "stages": {
2026-07-26T22:33:02.8435140Z         "doc": {
2026-07-26T22:33:02.8435263Z           "complete": false,
2026-07-26T22:33:02.8435373Z           "evidence": []
2026-07-26T22:33:02.8435475Z         },
2026-07-26T22:33:02.8435583Z         "impl": {
2026-07-26T22:33:02.8435701Z           "complete": true,
2026-07-26T22:33:02.8435801Z           "evidence": [
2026-07-26T22:33:02.8435900Z             {
2026-07-26T22:33:02.8436056Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.8436290Z               "line": 1241
2026-07-26T22:33:02.8436385Z             },
2026-07-26T22:33:02.8436491Z             {
2026-07-26T22:33:02.8436643Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.8436758Z               "line": 1329
2026-07-26T22:33:02.8436848Z             },
2026-07-26T22:33:02.8436962Z             {
2026-07-26T22:33:02.8437177Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.8437354Z               "line": 1351
2026-07-26T22:33:02.8437491Z             }
2026-07-26T22:33:02.8437625Z           ]
2026-07-26T22:33:02.8437769Z         },
2026-07-26T22:33:02.8437902Z         "int": {
2026-07-26T22:33:02.8438008Z           "complete": true,
2026-07-26T22:33:02.8438126Z           "evidence": [
2026-07-26T22:33:02.8438234Z             {
2026-07-26T22:33:02.8438397Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-07-26T22:33:02.8438509Z               "line": 42
2026-07-26T22:33:02.8438623Z             }
2026-07-26T22:33:02.8438714Z           ]
2026-07-26T22:33:02.8438814Z         },
2026-07-26T22:33:02.8438913Z         "unit": {
2026-07-26T22:33:02.8439115Z           "complete": true,
2026-07-26T22:33:02.8439219Z           "evidence": [
2026-07-26T22:33:02.8439316Z             {
2026-07-26T22:33:02.8439467Z               "path": "crates/spt-daemon/src/config.rs",
2026-07-26T22:33:02.8439587Z               "line": 515
2026-07-26T22:33:02.8439682Z             },
2026-07-26T22:33:02.8439787Z             {
2026-07-26T22:33:02.8439935Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.8440054Z               "line": 2528
2026-07-26T22:33:02.8440149Z             },
2026-07-26T22:33:02.8440245Z             {
2026-07-26T22:33:02.8440392Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.8440506Z               "line": 2598
2026-07-26T22:33:02.8440608Z             },
2026-07-26T22:33:02.8440711Z             {
2026-07-26T22:33:02.8440856Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.8440975Z               "line": 2628
2026-07-26T22:33:02.8441078Z             },
2026-07-26T22:33:02.8441187Z             {
2026-07-26T22:33:02.8441332Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.8441444Z               "line": 2661
2026-07-26T22:33:02.8441541Z             }
2026-07-26T22:33:02.8441641Z           ]
2026-07-26T22:33:02.8441741Z         }
2026-07-26T22:33:02.8441836Z       }
2026-07-26T22:33:02.8441937Z     },
2026-07-26T22:33:02.8442036Z     {
2026-07-26T22:33:02.8442160Z       "id": "REQ-DAEMON-5",
2026-07-26T22:33:02.8444059Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-07-26T22:33:02.8444236Z       "requiredStages": [
2026-07-26T22:33:02.8444490Z         "impl",
2026-07-26T22:33:02.8444593Z         "unit"
2026-07-26T22:33:02.8444684Z       ],
2026-07-26T22:33:02.8444785Z       "stages": {
2026-07-26T22:33:02.8444890Z         "doc": {
2026-07-26T22:33:02.8445004Z           "complete": false,
2026-07-26T22:33:02.8445114Z           "evidence": []
2026-07-26T22:33:02.8445214Z         },
2026-07-26T22:33:02.8445318Z         "impl": {
2026-07-26T22:33:02.8445443Z           "complete": true,
2026-07-26T22:33:02.8445552Z           "evidence": [
2026-07-26T22:33:02.8445652Z             {
2026-07-26T22:33:02.8445800Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:02.8445919Z               "line": 612
2026-07-26T22:33:02.8446020Z             },
2026-07-26T22:33:02.8446120Z             {
2026-07-26T22:33:02.8446271Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:02.8446488Z               "line": 1221
2026-07-26T22:33:02.8446588Z             },
2026-07-26T22:33:02.8446693Z             {
2026-07-26T22:33:02.8446840Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:02.8446955Z               "line": 1234
2026-07-26T22:33:02.8447060Z             },
2026-07-26T22:33:02.8447151Z             {
2026-07-26T22:33:02.8447304Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:02.8447418Z               "line": 1252
2026-07-26T22:33:02.8447522Z             },
2026-07-26T22:33:02.8447623Z             {
2026-07-26T22:33:02.8447771Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:02.8447889Z               "line": 1293
2026-07-26T22:33:02.8447986Z             }
2026-07-26T22:33:02.8448085Z           ]
2026-07-26T22:33:02.8448190Z         },
2026-07-26T22:33:02.8448291Z         "int": {
2026-07-26T22:33:02.8448414Z           "complete": false,
2026-07-26T22:33:02.8448524Z           "evidence": []
2026-07-26T22:33:02.8448635Z         },
2026-07-26T22:33:02.8448738Z         "unit": {
2026-07-26T22:33:02.8448856Z           "complete": true,
2026-07-26T22:33:02.8449050Z           "evidence": [
2026-07-26T22:33:02.8449154Z             {
2026-07-26T22:33:02.8449294Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:02.8449407Z               "line": 1801
2026-07-26T22:33:02.8449503Z             },
2026-07-26T22:33:02.8449603Z             {
2026-07-26T22:33:02.8449746Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:02.8449866Z               "line": 1825
2026-07-26T22:33:02.8449966Z             },
2026-07-26T22:33:02.8450065Z             {
2026-07-26T22:33:02.8450195Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:02.8450313Z               "line": 1851
2026-07-26T22:33:02.8450418Z             }
2026-07-26T22:33:02.8450520Z           ]
2026-07-26T22:33:02.8450618Z         }
2026-07-26T22:33:02.8450728Z       }
2026-07-26T22:33:02.8450834Z     },
2026-07-26T22:33:02.8450938Z     {
2026-07-26T22:33:02.8451057Z       "id": "REQ-DAEMON-6",
2026-07-26T22:33:02.8453060Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-07-26T22:33:02.8453202Z       "requiredStages": [
2026-07-26T22:33:02.8453306Z         "impl",
2026-07-26T22:33:02.8453408Z         "unit"
2026-07-26T22:33:02.8453512Z       ],
2026-07-26T22:33:02.8453617Z       "stages": {
2026-07-26T22:33:02.8453737Z         "doc": {
2026-07-26T22:33:02.8453855Z           "complete": false,
2026-07-26T22:33:02.8453959Z           "evidence": []
2026-07-26T22:33:02.8454186Z         },
2026-07-26T22:33:02.8454290Z         "impl": {
2026-07-26T22:33:02.8454406Z           "complete": true,
2026-07-26T22:33:02.8454505Z           "evidence": [
2026-07-26T22:33:02.8454605Z             {
2026-07-26T22:33:02.8454754Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8454867Z               "line": 641
2026-07-26T22:33:02.8454958Z             },
2026-07-26T22:33:02.8455064Z             {
2026-07-26T22:33:02.8455205Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8455326Z               "line": 680
2026-07-26T22:33:02.8455425Z             },
2026-07-26T22:33:02.8455534Z             {
2026-07-26T22:33:02.8455674Z               "path": "crates/spt-daemon/src/service.rs",
2026-07-26T22:33:02.8455797Z               "line": 55
2026-07-26T22:33:02.8455989Z             },
2026-07-26T22:33:02.8456088Z             {
2026-07-26T22:33:02.8456242Z               "path": "crates/spt-daemon/src/service.rs",
2026-07-26T22:33:02.8456370Z               "line": 70
2026-07-26T22:33:02.8456474Z             },
2026-07-26T22:33:02.8456576Z             {
2026-07-26T22:33:02.8456713Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8456831Z               "line": 4313
2026-07-26T22:33:02.8456931Z             },
2026-07-26T22:33:02.8457034Z             {
2026-07-26T22:33:02.8457162Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8457287Z               "line": 4380
2026-07-26T22:33:02.8457387Z             }
2026-07-26T22:33:02.8457486Z           ]
2026-07-26T22:33:02.8457593Z         },
2026-07-26T22:33:02.8457702Z         "int": {
2026-07-26T22:33:02.8457820Z           "complete": false,
2026-07-26T22:33:02.8457936Z           "evidence": []
2026-07-26T22:33:02.8458040Z         },
2026-07-26T22:33:02.8458149Z         "unit": {
2026-07-26T22:33:02.8458278Z           "complete": true,
2026-07-26T22:33:02.8458378Z           "evidence": [
2026-07-26T22:33:02.8458474Z             {
2026-07-26T22:33:02.8458635Z               "path": "crates/spt-daemon/src/service.rs",
2026-07-26T22:33:02.8458755Z               "line": 363
2026-07-26T22:33:02.8458861Z             },
2026-07-26T22:33:02.8459036Z             {
2026-07-26T22:33:02.8459186Z               "path": "crates/spt-daemon/src/service.rs",
2026-07-26T22:33:02.8459307Z               "line": 374
2026-07-26T22:33:02.8459406Z             },
2026-07-26T22:33:02.8459517Z             {
2026-07-26T22:33:02.8459662Z               "path": "crates/spt-daemon/src/service.rs",
2026-07-26T22:33:02.8459777Z               "line": 400
2026-07-26T22:33:02.8459878Z             },
2026-07-26T22:33:02.8459981Z             {
2026-07-26T22:33:02.8460116Z               "path": "crates/spt-daemon/src/service.rs",
2026-07-26T22:33:02.8460231Z               "line": 426
2026-07-26T22:33:02.8460334Z             }
2026-07-26T22:33:02.8460445Z           ]
2026-07-26T22:33:02.8460545Z         }
2026-07-26T22:33:02.8460644Z       }
2026-07-26T22:33:02.8460746Z     },
2026-07-26T22:33:02.8460845Z     {
2026-07-26T22:33:02.8460959Z       "id": "REQ-DAEMON-7",
2026-07-26T22:33:02.8462428Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-07-26T22:33:02.8462551Z       "requiredStages": [
2026-07-26T22:33:02.8462651Z         "impl",
2026-07-26T22:33:02.8462752Z         "unit"
2026-07-26T22:33:02.8462851Z       ],
2026-07-26T22:33:02.8462952Z       "stages": {
2026-07-26T22:33:02.8463057Z         "doc": {
2026-07-26T22:33:02.8463175Z           "complete": false,
2026-07-26T22:33:02.8463276Z           "evidence": []
2026-07-26T22:33:02.8463376Z         },
2026-07-26T22:33:02.8463591Z         "impl": {
2026-07-26T22:33:02.8463710Z           "complete": true,
2026-07-26T22:33:02.8463824Z           "evidence": [
2026-07-26T22:33:02.8463930Z             {
2026-07-26T22:33:02.8464076Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8464191Z               "line": 699
2026-07-26T22:33:02.8464297Z             },
2026-07-26T22:33:02.8464401Z             {
2026-07-26T22:33:02.8464547Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-07-26T22:33:02.8464657Z               "line": 610
2026-07-26T22:33:02.8464756Z             },
2026-07-26T22:33:02.8464855Z             {
2026-07-26T22:33:02.8464999Z               "path": "crates/spt-daemon/src/service.rs",
2026-07-26T22:33:02.8465108Z               "line": 89
2026-07-26T22:33:02.8465203Z             },
2026-07-26T22:33:02.8465305Z             {
2026-07-26T22:33:02.8465538Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8465657Z               "line": 4234
2026-07-26T22:33:02.8465770Z             }
2026-07-26T22:33:02.8465877Z           ]
2026-07-26T22:33:02.8465972Z         },
2026-07-26T22:33:02.8466076Z         "int": {
2026-07-26T22:33:02.8466196Z           "complete": false,
2026-07-26T22:33:02.8466314Z           "evidence": []
2026-07-26T22:33:02.8466414Z         },
2026-07-26T22:33:02.8466521Z         "unit": {
2026-07-26T22:33:02.8466639Z           "complete": true,
2026-07-26T22:33:02.8466748Z           "evidence": [
2026-07-26T22:33:02.8466850Z             {
2026-07-26T22:33:02.8466996Z               "path": "crates/spt-daemon/src/service.rs",
2026-07-26T22:33:02.8467097Z               "line": 389
2026-07-26T22:33:02.8467203Z             },
2026-07-26T22:33:02.8467306Z             {
2026-07-26T22:33:02.8467443Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8467557Z               "line": 15639
2026-07-26T22:33:02.8467669Z             }
2026-07-26T22:33:02.8467770Z           ]
2026-07-26T22:33:02.8467875Z         }
2026-07-26T22:33:02.8467975Z       }
2026-07-26T22:33:02.8468085Z     },
2026-07-26T22:33:02.8468186Z     {
2026-07-26T22:33:02.8468308Z       "id": "REQ-DAEMON-8",
2026-07-26T22:33:02.8469369Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-07-26T22:33:02.8469496Z       "requiredStages": [
2026-07-26T22:33:02.8469611Z         "impl",
2026-07-26T22:33:02.8469722Z         "unit"
2026-07-26T22:33:02.8469825Z       ],
2026-07-26T22:33:02.8469920Z       "stages": {
2026-07-26T22:33:02.8470025Z         "doc": {
2026-07-26T22:33:02.8470133Z           "complete": false,
2026-07-26T22:33:02.8470251Z           "evidence": []
2026-07-26T22:33:02.8470351Z         },
2026-07-26T22:33:02.8470467Z         "impl": {
2026-07-26T22:33:02.8470623Z           "complete": true,
2026-07-26T22:33:02.8470805Z           "evidence": [
2026-07-26T22:33:02.8470947Z             {
2026-07-26T22:33:02.8471219Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8471382Z               "line": 544
2026-07-26T22:33:02.8471509Z             },
2026-07-26T22:33:02.8471616Z             {
2026-07-26T22:33:02.8471768Z               "path": "crates/spt-daemon/src/service.rs",
2026-07-26T22:33:02.8471868Z               "line": 56
2026-07-26T22:33:02.8471969Z             }
2026-07-26T22:33:02.8472072Z           ]
2026-07-26T22:33:02.8472178Z         },
2026-07-26T22:33:02.8472279Z         "int": {
2026-07-26T22:33:02.8472401Z           "complete": false,
2026-07-26T22:33:02.8472516Z           "evidence": []
2026-07-26T22:33:02.8472608Z         },
2026-07-26T22:33:02.8472706Z         "unit": {
2026-07-26T22:33:02.8472824Z           "complete": true,
2026-07-26T22:33:02.8472935Z           "evidence": [
2026-07-26T22:33:02.8473040Z             {
2026-07-26T22:33:02.8473177Z               "path": "crates/spt-daemon/src/service.rs",
2026-07-26T22:33:02.8473411Z               "line": 363
2026-07-26T22:33:02.8473546Z             },
2026-07-26T22:33:02.8473641Z             {
2026-07-26T22:33:02.8473807Z               "path": "crates/spt-daemon/src/service.rs",
2026-07-26T22:33:02.8473922Z               "line": 400
2026-07-26T22:33:02.8474031Z             }
2026-07-26T22:33:02.8474131Z           ]
2026-07-26T22:33:02.8474232Z         }
2026-07-26T22:33:02.8474346Z       }
2026-07-26T22:33:02.8474446Z     },
2026-07-26T22:33:02.8474547Z     {
2026-07-26T22:33:02.8474665Z       "id": "REQ-DAEMON-9",
2026-07-26T22:33:02.8477165Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-07-26T22:33:02.8477466Z       "requiredStages": [
2026-07-26T22:33:02.8477571Z         "impl",
2026-07-26T22:33:02.8477681Z         "unit"
2026-07-26T22:33:02.8477772Z       ],
2026-07-26T22:33:02.8477880Z       "stages": {
2026-07-26T22:33:02.8477984Z         "doc": {
2026-07-26T22:33:02.8478103Z           "complete": false,
2026-07-26T22:33:02.8478202Z           "evidence": []
2026-07-26T22:33:02.8478297Z         },
2026-07-26T22:33:02.8478417Z         "impl": {
2026-07-26T22:33:02.8478535Z           "complete": true,
2026-07-26T22:33:02.8478640Z           "evidence": [
2026-07-26T22:33:02.8478760Z             {
2026-07-26T22:33:02.8478921Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.8479160Z               "line": 333
2026-07-26T22:33:02.8479260Z             },
2026-07-26T22:33:02.8479366Z             {
2026-07-26T22:33:02.8479513Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8479624Z               "line": 3822
2026-07-26T22:33:02.8479728Z             },
2026-07-26T22:33:02.8479828Z             {
2026-07-26T22:33:02.8479986Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8480099Z               "line": 211
2026-07-26T22:33:02.8480210Z             },
2026-07-26T22:33:02.8480306Z             {
2026-07-26T22:33:02.8480465Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8480575Z               "line": 402
2026-07-26T22:33:02.8480693Z             },
2026-07-26T22:33:02.8480792Z             {
2026-07-26T22:33:02.8480935Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8481055Z               "line": 439
2026-07-26T22:33:02.8481159Z             },
2026-07-26T22:33:02.8481251Z             {
2026-07-26T22:33:02.8481389Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8481502Z               "line": 4466
2026-07-26T22:33:02.8481603Z             }
2026-07-26T22:33:02.8481708Z           ]
2026-07-26T22:33:02.8481808Z         },
2026-07-26T22:33:02.8481914Z         "int": {
2026-07-26T22:33:02.8482032Z           "complete": false,
2026-07-26T22:33:02.8482141Z           "evidence": []
2026-07-26T22:33:02.8482257Z         },
2026-07-26T22:33:02.8482380Z         "unit": {
2026-07-26T22:33:02.8482562Z           "complete": true,
2026-07-26T22:33:02.8482676Z           "evidence": [
2026-07-26T22:33:02.8482786Z             {
2026-07-26T22:33:02.8482938Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8483057Z               "line": 1462
2026-07-26T22:33:02.8483158Z             },
2026-07-26T22:33:02.8483257Z             {
2026-07-26T22:33:02.8483495Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8483614Z               "line": 19152
2026-07-26T22:33:02.8483714Z             }
2026-07-26T22:33:02.8483820Z           ]
2026-07-26T22:33:02.8483920Z         }
2026-07-26T22:33:02.8484024Z       }
2026-07-26T22:33:02.8484125Z     },
2026-07-26T22:33:02.8484230Z     {
2026-07-26T22:33:02.8484353Z       "id": "REQ-DAEMON-BITS-AMBIGUITY",
2026-07-26T22:33:02.8501268Z       "title": "SEED (inactive, RCA-first — do NOT close on agreement): nothing on a node surfaces WHICH BITS ARE SERVING, and the same silent wrong-state shape bit twice in one day (2026-07-25). Case 1 (adapter-side echo): a post-reboot ensure race left a dev-build alchemy Hub Daemon serving release shells — version skew visible only by manually comparing process image paths. Case 2 (core, field-measured by flynn): TWO spt daemons resident with live brains on one node — the installed main daemon (owning ALL sockets: the 5474 listeners and every established connection, single home_tag pipe family) and an orphaned scratchpad-built daemon (auto-started into the node by ensure_running from a stray dev-binary invocation at 16:18, holding zero sockets, resident for hours) — while `spt --version` on any binary file answers nothing about which process is answering. Measured sharp edges to carry into the RCA: (a) exe path and resolved HOME are independent — the orphan ran scratchpad bits against the DEFAULT home, so 'where the binary lives' predicts nothing about 'whose state it mutates'; (b) the brain.ready breadcrumb is ONE FILE PER HOME, LAST-WRITER-WINS, keyed by generation — with two brains in one home the stamp can be written by the daemon you are NOT gating on, so any readiness/identity gate that trusts it must first establish single-writer; (c) the breadcrumb's exe_hash (SHA-256 of resident bytes captured at process start) is the RIGHT discriminator — image path answers what is on disk, not which bits are answering — but only under (b)'s single-writer precondition; (d) reap order matters: killing the breadcrumb's last writer leaves the file describing a dead brain's bits until the survivor's next ready write, so any bits-gate readback must be re-established AFTER a reap, never carried across one. Open RCA questions before any fix is designed: why did the second daemon's cold-start not refuse against the live singleton (socket-bind loss is survivable-and-resident today — is that the right posture?); what should ensure_running check BEYOND socket liveness (bits identity?); where does 'which bits are serving' surface to an operator (endpoint list? daemon status verb?). Kin: the NEVER-SEALING-OBSERVABILITY candidate (same shape — silent wrong-state only a human staring at the right field catches). Proposed by todlando (his lane), relayed by flynn with the socket-ownership + exe_hash measurements; seeded by doyle. The orphan pair was reaped by path 2026-07-25 (verified by exact ExecutablePath, supervisor before brain); the reap resolved the instance, not the class. RCA POINTS FROM THE PROPOSING LANE (todlando, extended into THIS record 2026-07-26 rather than minted as a second seed): (1) ORDERING — 'do both pids resolve the same spt_home?' is the FIRST question, not a co-equal fact, because every other discriminator is conditioned on its answer: brain.ready is `<spt_home>/brain.ready`, ONE path, single-writer BY DESIGN, so a shared home makes the breadcrumb a contended file and `generation` — the readiness gate's key, which exists precisely to prevent false promotion — becomes satisfiable by the stamp of the daemon you are NOT gating on. Prior art on this node: default-home `home_tag` sockets already cross-talk the live daemon's hubs, so shared-home cross-talk is an established class here, not a hypothetical. (2) GATE ON RESIDENT BYTES, NEVER ON IMAGE PATH — AND TREAT ABSENCE AS UNPROVEN. Path answers 'what is on disk where I asked'; with two daemons on different bits the only question that matters is 'which bits answered me'. Path is the exact field that has already lied in the field: KH 6.11 — the broker resolves `current_exe()` PER SPAWN (`crates/spt-daemon/src/brainproc.rs`), which on Linux is inode-tracking, so an `update apply` rename made the respawn land on the OLD bytes while readiness passed and the trial recorded `applied:N` (kitsubito v0.4.1); `exe_hash` (lowercase-hex SHA-256 of resident bytes, captured ONCE at process start — `current_exe_hash`, `crates/spt-daemon/src/brainproc.rs:402`) exists BECAUSE the path-derived belief was provably wrong, and the enlyzeam 0.3.0-under-0.3.2-on-disk case is the same record/reality divergence one layer up. Constraint any observability gate must inherit and must NOT weaken: `exe_hash` is ADDITIVE/BEST-EFFORT — omitted when the self-read fails, `None` on any pre-D7 stamp — and today's `bytes_gate` deliberately degrades an absent hash to readiness-only promotion with a loud `PROMOTE_BYTES_UNVERIFIED` (N-1 compat, `brainproc.rs:1042`). An operator-facing 'which bits are serving' answer must degrade the OTHER WAY: absent hash reads UNPROVEN — never PASS, and never a silent fall back to image path. A compat degrade that is correct for ACCEPTING an update is wrong for ASSERTING an identity. (3) SERVICE OWNERSHIP IS DECIDED BY SOCKET/HUB BINDING, NOT BY START TIME. Case 2 measured the instance (main holds all 5474 listeners + every established connection; the scratchpad daemon holds zero sockets and was the LATER start) but the INFERENCE RULE is what must survive the instance: a later start is not thereby the loser and an earlier start is not thereby the server — 'who is serving' is answered by who owns the binding, so any gate, reap, or diagnostic that ranks candidates by pid or start time is guessing at the one fact it is supposed to establish. (4) REAP-ORDER SYMMETRY — (d)'s re-establish-the-gate-AFTER-the-reap rule holds identically on the REVERT path; a bits-gate readback may never be carried across a reap or a rollback in either direction. (5) SINGLE RECORD — this seed is the one home for the class (premature-closure guard: convergent reads are not a root cause, and a green re-read after a reap assigns owner without closing); the socket-bind-loss posture question stays OPEN inside it, and the orphan-pair instance stays closed.",
2026-07-26T22:33:02.8502213Z       "requiredStages": [],
2026-07-26T22:33:02.8502385Z       "stages": {
2026-07-26T22:33:02.8502551Z         "doc": {
2026-07-26T22:33:02.8502681Z           "complete": false,
2026-07-26T22:33:02.8502828Z           "evidence": []
2026-07-26T22:33:02.8502972Z         },
2026-07-26T22:33:02.8503104Z         "impl": {
2026-07-26T22:33:02.8503223Z           "complete": false,
2026-07-26T22:33:02.8503344Z           "evidence": []
2026-07-26T22:33:02.8503443Z         },
2026-07-26T22:33:02.8503548Z         "int": {
2026-07-26T22:33:02.8503654Z           "complete": false,
2026-07-26T22:33:02.8503776Z           "evidence": []
2026-07-26T22:33:02.8503901Z         },
2026-07-26T22:33:02.8504002Z         "unit": {
2026-07-26T22:33:02.8504115Z           "complete": false,
2026-07-26T22:33:02.8504241Z           "evidence": []
2026-07-26T22:33:02.8504345Z         }
2026-07-26T22:33:02.8504443Z       }
2026-07-26T22:33:02.8504543Z     },
2026-07-26T22:33:02.8504649Z     {
2026-07-26T22:33:02.8504772Z       "id": "REQ-DAEMON-REFRESH",
2026-07-26T22:33:02.8508006Z       "title": "THE-FORKENING W4 (operator add 2026-07-14): `spt daemon refresh` — restart the daemon BRAIN without a binary swap and WITHOUT touching the broker: exactly the apply_staged brain-cycle path (brain stop -> respawn -> readiness trial -> promote, incl. the trial-drain drive REQ-UPDATE-TRIAL-DRAIN-DRIVE and viewer-only resume REQ-BRAIN-RESUME-NO-CONTROL-STEAL) minus the swap. Recovery verb for wedged brain-held state (field motivator 2026-07-14: endpoint bringup broken on a live daemon + deployah down — today's only remedy is a full daemon bounce that kills every PTY). Broker + PTYs survive by construction (handoff invariant). Failure = the existing trial rollback semantics (old brain resumes; refresh reports loud). Gate: unit — verb routes the brain-cycle without staging/swap preconditions; int — refresh on a live daemon with a hosted PTY: brain generation changes, PTY survives, endpoint stays attached; doc — daemon docs name refresh next to stop/start. Kin apply_staged (the path it reuses), REQ-UPDATE-TRIAL-DRAIN-DRIVE, REQ-BRAIN-RESUME-NO-CONTROL-STEAL.",
2026-07-26T22:33:02.8508283Z       "requiredStages": [
2026-07-26T22:33:02.8508383Z         "doc",
2026-07-26T22:33:02.8508484Z         "impl",
2026-07-26T22:33:02.8508579Z         "unit",
2026-07-26T22:33:02.8508679Z         "int"
2026-07-26T22:33:02.8508780Z       ],
2026-07-26T22:33:02.8508893Z       "stages": {
2026-07-26T22:33:02.8509081Z         "doc": {
2026-07-26T22:33:02.8509198Z           "complete": true,
2026-07-26T22:33:02.8509313Z           "evidence": [
2026-07-26T22:33:02.8509420Z             {
2026-07-26T22:33:02.8509655Z               "path": "CONTEXT.md",
2026-07-26T22:33:02.8509770Z               "line": 600
2026-07-26T22:33:02.8509872Z             }
2026-07-26T22:33:02.8509987Z           ]
2026-07-26T22:33:02.8510088Z         },
2026-07-26T22:33:02.8510192Z         "impl": {
2026-07-26T22:33:02.8510311Z           "complete": true,
2026-07-26T22:33:02.8510426Z           "evidence": [
2026-07-26T22:33:02.8510525Z             {
2026-07-26T22:33:02.8510694Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:02.8510807Z               "line": 363
2026-07-26T22:33:02.8510907Z             },
2026-07-26T22:33:02.8511008Z             {
2026-07-26T22:33:02.8511150Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8511260Z               "line": 1497
2026-07-26T22:33:02.8511365Z             },
2026-07-26T22:33:02.8511465Z             {
2026-07-26T22:33:02.8511594Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8511704Z               "line": 4430
2026-07-26T22:33:02.8511813Z             }
2026-07-26T22:33:02.8511919Z           ]
2026-07-26T22:33:02.8512014Z         },
2026-07-26T22:33:02.8512122Z         "int": {
2026-07-26T22:33:02.8512250Z           "complete": true,
2026-07-26T22:33:02.8516201Z           "evidence": [
2026-07-26T22:33:02.8516333Z             {
2026-07-26T22:33:02.8516511Z               "path": "crates/spt/tests/daemon_refresh_e2e.rs",
2026-07-26T22:33:02.8516634Z               "line": 14
2026-07-26T22:33:02.8516736Z             }
2026-07-26T22:33:02.8516840Z           ]
2026-07-26T22:33:02.8516944Z         },
2026-07-26T22:33:02.8517045Z         "unit": {
2026-07-26T22:33:02.8517160Z           "complete": true,
2026-07-26T22:33:02.8517277Z           "evidence": [
2026-07-26T22:33:02.8517382Z             {
2026-07-26T22:33:02.8517551Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:02.8517665Z               "line": 823
2026-07-26T22:33:02.8517776Z             },
2026-07-26T22:33:02.8517875Z             {
2026-07-26T22:33:02.8518014Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8518119Z               "line": 13684
2026-07-26T22:33:02.8518223Z             }
2026-07-26T22:33:02.8518324Z           ]
2026-07-26T22:33:02.8518419Z         }
2026-07-26T22:33:02.8518524Z       }
2026-07-26T22:33:02.8518619Z     },
2026-07-26T22:33:02.8518725Z     {
2026-07-26T22:33:02.8518871Z       "id": "REQ-DAEMON-RESTART-SELF-INTERRUPTION",
2026-07-26T22:33:02.8525470Z       "title": "SEED (inactive — operator-workflow trap, field-paid 2026-07-25): an spt-hosted context CANNOT restart the daemon, because the restart's STOP phase tears down the very context running the restart command — the START half never executes and the daemon stays down until an operator starts it by hand. Field case (this node, 17:47–17:50): an agent-kicked restart's stop-begin swept the initiating context and everything sharing its Job Object (flynn's shell + the relay-hopped alchemy Hub, cross-context job members — see REQ-SHELL-CLI-SPAWN-JOB-EXPOSURE's field-firing record); the broker drained ~2m10s to final exit (stderr ends abruptly at 17:50:05.8 amid routine traffic, no shutdown markers); the START was already dead; the operator manually started whatever binary was installed (v0.42.0), with no channel conveying which bits the restarting agent had intended — binary choice silently transferred to whoever brings the daemon up (kin: REQ-DAEMON-BITS-AMBIGUITY, the same which-bits-serve blindness). CONSEQUENCES: (a) every RESTART-REQUIRED apply (broker update, seed-skew restart per hazard 7.9) is operator-only today, and nothing documents that; (b) stop-begin kills bound shells with `close_shell` unrun, so even the GRACEFUL stop path manufactures stale-online shell records on every restart — healed at the read gates by REQ-HAZARD-SHELL-STALE-ONLINE's derivation, but manufactured nonetheless, and on pre-derivation binaries the records lie until the next bind; (c) a restart initiated from inside the system it restarts is a self-interruption with no error surface — the initiator dies believing the restart is in flight. Option space at activation: (1) daemon-owned restart verb — the OUTGOING broker spawns its successor job-neutrally (the 7.10 WMI→schtasks→breakaway ladder already exists) before exiting, so the caller only requests and its death is irrelevant; (2) a detached job-neutral restart helper (same detached_no_inherit + ladder) that survives the caller; (3) status quo + the public contract documents restart as operator-only. Whichever wins must also answer where the INTENDED-BITS declaration lives so a manual or automated starter picks the right binary (the (c)/BITS-AMBIGUITY joint).",
2026-07-26T22:33:02.8525949Z       "requiredStages": [],
2026-07-26T22:33:02.8526060Z       "stages": {
2026-07-26T22:33:02.8526156Z         "doc": {
2026-07-26T22:33:02.8526278Z           "complete": false,
2026-07-26T22:33:02.8526389Z           "evidence": []
2026-07-26T22:33:02.8526494Z         },
2026-07-26T22:33:02.8526593Z         "impl": {
2026-07-26T22:33:02.8526732Z           "complete": false,
2026-07-26T22:33:02.8526842Z           "evidence": []
2026-07-26T22:33:02.8526946Z         },
2026-07-26T22:33:02.8527071Z         "int": {
2026-07-26T22:33:02.8527190Z           "complete": false,
2026-07-26T22:33:02.8527301Z           "evidence": []
2026-07-26T22:33:02.8527405Z         },
2026-07-26T22:33:02.8527504Z         "unit": {
2026-07-26T22:33:02.8527630Z           "complete": false,
2026-07-26T22:33:02.8527742Z           "evidence": []
2026-07-26T22:33:02.8527847Z         }
2026-07-26T22:33:02.8527947Z       }
2026-07-26T22:33:02.8528041Z     },
2026-07-26T22:33:02.8528135Z     {
2026-07-26T22:33:02.8528273Z       "id": "REQ-DAEMON-SERVICE-INSTALL",
2026-07-26T22:33:02.8530520Z       "title": "F-038 RIDER (flynn nice-to-have, QUEUED not activated): a documented OS-service registration recipe or `spt daemon install-service` verb so the daemon itself survives box reboot (flynn's box runs managed_by:null = daemon-at-boot unprovisioned; kitsubito's hand-rolled systemd --user unit = prior art). NOT in MSG-IDENTITY scope — REQ-ENDPOINT-AUTOSTART covers the daemon-start-to-endpoint leg; the boot-to-daemon leg stays interim (logon scheduled task / systemd unit). Activate at an infra-provisioning milestone; shape (recipe doc vs verb) ruled then. Kin [[daemon-service-detection-gotcha]] (global-OS-state detection blind on dev box — a verb must not regress that), [[kitsubito-linux-rig]].",
2026-07-26T22:33:02.8530671Z       "requiredStages": [],
2026-07-26T22:33:02.8530780Z       "stages": {
2026-07-26T22:33:02.8530876Z         "doc": {
2026-07-26T22:33:02.8530988Z           "complete": false,
2026-07-26T22:33:02.8531102Z           "evidence": []
2026-07-26T22:33:02.8531203Z         },
2026-07-26T22:33:02.8531303Z         "impl": {
2026-07-26T22:33:02.8531475Z           "complete": false,
2026-07-26T22:33:02.8531636Z           "evidence": []
2026-07-26T22:33:02.8531790Z         },
2026-07-26T22:33:02.8531937Z         "int": {
2026-07-26T22:33:02.8532124Z           "complete": false,
2026-07-26T22:33:02.8532261Z           "evidence": []
2026-07-26T22:33:02.8532395Z         },
2026-07-26T22:33:02.8532542Z         "unit": {
2026-07-26T22:33:02.8532829Z           "complete": false,
2026-07-26T22:33:02.8532938Z           "evidence": []
2026-07-26T22:33:02.8533044Z         }
2026-07-26T22:33:02.8533139Z       }
2026-07-26T22:33:02.8533238Z     },
2026-07-26T22:33:02.8533342Z     {
2026-07-26T22:33:02.8533484Z       "id": "REQ-DAEMON-STATUS-JSON-TRUTH",
2026-07-26T22:33:02.8535071Z       "title": "D2 (F028, perri F-d): `daemon status --json` truth drift. managed_by/managed_active read null in JSON while the HUMAN view says 'managed-by: manual — at-logon task registered' (the two surfaces disagree); and pump staleness (the STALLED diagnosis, B5) is NOT computable from JSON — only a raw pump_heartbeat_ms is emitted, no derived staleness/stalled field. FIX: JSON managed_by/active match the human render, and add a derived pump-staleness/stalled field so B5's condition is machine-observable. See triage D2.",
2026-07-26T22:33:02.8535311Z       "requiredStages": [],
2026-07-26T22:33:02.8535424Z       "stages": {
2026-07-26T22:33:02.8535524Z         "doc": {
2026-07-26T22:33:02.8535663Z           "complete": false,
2026-07-26T22:33:02.8535776Z           "evidence": []
2026-07-26T22:33:02.8535872Z         },
2026-07-26T22:33:02.8535969Z         "impl": {
2026-07-26T22:33:02.8536095Z           "complete": false,
2026-07-26T22:33:02.8536199Z           "evidence": []
2026-07-26T22:33:02.8536305Z         },
2026-07-26T22:33:02.8536410Z         "int": {
2026-07-26T22:33:02.8536514Z           "complete": false,
2026-07-26T22:33:02.8536620Z           "evidence": []
2026-07-26T22:33:02.8536725Z         },
2026-07-26T22:33:02.8536829Z         "unit": {
2026-07-26T22:33:02.8536944Z           "complete": false,
2026-07-26T22:33:02.8537049Z           "evidence": []
2026-07-26T22:33:02.8537148Z         }
2026-07-26T22:33:02.8537250Z       }
2026-07-26T22:33:02.8537349Z     },
2026-07-26T22:33:02.8537449Z     {
2026-07-26T22:33:02.8537598Z       "id": "REQ-DAEMON-STDERR-PERSIST",
2026-07-26T22:33:02.8538901Z       "title": "W3 (LIFECYCLE-TRUTH, observability): broker + brain stderr tee to a rotating size-capped file under SPT_HOME (e.g. 2x5MB), stamped per generation. ROOT: detached daemon nulls stdio -> the 2026-07-06/07 incident window left ZERO logs (both RCAs ran blind; rigs had to recreate everything). KNOWN-HAZARDS note: never inherit handles (REQ-HAZARD-DETACHED-DAEMON-STDIO) — open the file in-process, don't pipe.",
2026-07-26T22:33:02.8539119Z       "requiredStages": [
2026-07-26T22:33:02.8539216Z         "impl",
2026-07-26T22:33:02.8539325Z         "unit"
2026-07-26T22:33:02.8539415Z       ],
2026-07-26T22:33:02.8539526Z       "stages": {
2026-07-26T22:33:02.8539625Z         "doc": {
2026-07-26T22:33:02.8539749Z           "complete": false,
2026-07-26T22:33:02.8539850Z           "evidence": []
2026-07-26T22:33:02.8539954Z         },
2026-07-26T22:33:02.8540054Z         "impl": {
2026-07-26T22:33:02.8540193Z           "complete": true,
2026-07-26T22:33:02.8540302Z           "evidence": [
2026-07-26T22:33:02.8540403Z             {
2026-07-26T22:33:02.8540564Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.8540689Z               "line": 164
2026-07-26T22:33:02.8540794Z             },
2026-07-26T22:33:02.8540897Z             {
2026-07-26T22:33:02.8541052Z               "path": "crates/spt-daemon/src/stderrlog.rs",
2026-07-26T22:33:02.8541166Z               "line": 23
2026-07-26T22:33:02.8541326Z             },
2026-07-26T22:33:02.8541464Z             {
2026-07-26T22:33:02.8541710Z               "path": "crates/spt-daemon/src/stderrlog.rs",
2026-07-26T22:33:02.8541854Z               "line": 55
2026-07-26T22:33:02.8541958Z             },
2026-07-26T22:33:02.8542059Z             {
2026-07-26T22:33:02.8542215Z               "path": "crates/spt-daemon/src/stderrlog.rs",
2026-07-26T22:33:02.8542326Z               "line": 65
2026-07-26T22:33:02.8542426Z             },
2026-07-26T22:33:02.8542530Z             {
2026-07-26T22:33:02.8542674Z               "path": "crates/spt-daemon/src/stderrlog.rs",
2026-07-26T22:33:02.8542778Z               "line": 135
2026-07-26T22:33:02.8543008Z             },
2026-07-26T22:33:02.8543097Z             {
2026-07-26T22:33:02.8543236Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8543342Z               "line": 4251
2026-07-26T22:33:02.8543445Z             }
2026-07-26T22:33:02.8543546Z           ]
2026-07-26T22:33:02.8543647Z         },
2026-07-26T22:33:02.8543750Z         "int": {
2026-07-26T22:33:02.8543873Z           "complete": false,
2026-07-26T22:33:02.8543974Z           "evidence": []
2026-07-26T22:33:02.8544077Z         },
2026-07-26T22:33:02.8544177Z         "unit": {
2026-07-26T22:33:02.8544296Z           "complete": true,
2026-07-26T22:33:02.8544401Z           "evidence": [
2026-07-26T22:33:02.8544510Z             {
2026-07-26T22:33:02.8544649Z               "path": "crates/spt-daemon/src/stderrlog.rs",
2026-07-26T22:33:02.8544868Z               "line": 167
2026-07-26T22:33:02.8544964Z             },
2026-07-26T22:33:02.8545064Z             {
2026-07-26T22:33:02.8545212Z               "path": "crates/spt-daemon/src/stderrlog.rs",
2026-07-26T22:33:02.8545340Z               "line": 178
2026-07-26T22:33:02.8545445Z             },
2026-07-26T22:33:02.8545551Z             {
2026-07-26T22:33:02.8545689Z               "path": "crates/spt-daemon/src/stderrlog.rs",
2026-07-26T22:33:02.8545807Z               "line": 203
2026-07-26T22:33:02.8545904Z             },
2026-07-26T22:33:02.8546007Z             {
2026-07-26T22:33:02.8546152Z               "path": "crates/spt-daemon/src/stderrlog.rs",
2026-07-26T22:33:02.8546265Z               "line": 216
2026-07-26T22:33:02.8546370Z             }
2026-07-26T22:33:02.8546467Z           ]
2026-07-26T22:33:02.8546571Z         }
2026-07-26T22:33:02.8546674Z       }
2026-07-26T22:33:02.8546779Z     },
2026-07-26T22:33:02.8546875Z     {
2026-07-26T22:33:02.8547037Z       "id": "REQ-DAEMON-STOP-LIVE-SESSION-WARN",
2026-07-26T22:33:02.8547586Z       "title": "W3 (LIFECYCLE-TRUTH, promoted old follow-wave seed): `daemon stop` with live hosted sessions warns + requires --force (or names the sessions it will kill) instead of silently killing them.",
2026-07-26T22:33:02.8547708Z       "requiredStages": [
2026-07-26T22:33:02.8547806Z         "impl",
2026-07-26T22:33:02.8547914Z         "unit"
2026-07-26T22:33:02.8548019Z       ],
2026-07-26T22:33:02.8548130Z       "stages": {
2026-07-26T22:33:02.8548234Z         "doc": {
2026-07-26T22:33:02.8548357Z           "complete": false,
2026-07-26T22:33:02.8548473Z           "evidence": []
2026-07-26T22:33:02.8548572Z         },
2026-07-26T22:33:02.8548672Z         "impl": {
2026-07-26T22:33:02.8548802Z           "complete": true,
2026-07-26T22:33:02.8548915Z           "evidence": [
2026-07-26T22:33:02.8549095Z             {
2026-07-26T22:33:02.8549232Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8549350Z               "line": 4343
2026-07-26T22:33:02.8549457Z             },
2026-07-26T22:33:02.8549556Z             {
2026-07-26T22:33:02.8549679Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8549804Z               "line": 4360
2026-07-26T22:33:02.8549908Z             },
2026-07-26T22:33:02.8550004Z             {
2026-07-26T22:33:02.8550128Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8550237Z               "line": 4382
2026-07-26T22:33:02.8550334Z             }
2026-07-26T22:33:02.8550443Z           ]
2026-07-26T22:33:02.8550538Z         },
2026-07-26T22:33:02.8550643Z         "int": {
2026-07-26T22:33:02.8550743Z           "complete": true,
2026-07-26T22:33:02.8550858Z           "evidence": [
2026-07-26T22:33:02.8550958Z             {
2026-07-26T22:33:02.8551120Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-07-26T22:33:02.8551234Z               "line": 263
2026-07-26T22:33:02.8551340Z             }
2026-07-26T22:33:02.8551434Z           ]
2026-07-26T22:33:02.8551534Z         },
2026-07-26T22:33:02.8551636Z         "unit": {
2026-07-26T22:33:02.8551740Z           "complete": true,
2026-07-26T22:33:02.8551857Z           "evidence": [
2026-07-26T22:33:02.8552052Z             {
2026-07-26T22:33:02.8552179Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8552280Z               "line": 19130
2026-07-26T22:33:02.8552381Z             }
2026-07-26T22:33:02.8552489Z           ]
2026-07-26T22:33:02.8552586Z         }
2026-07-26T22:33:02.8552690Z       }
2026-07-26T22:33:02.8552789Z     },
2026-07-26T22:33:02.8552886Z     {
2026-07-26T22:33:02.8553024Z       "id": "REQ-DIGEST-CROSS-NODE-PULL",
2026-07-26T22:33:02.8555858Z       "title": "The digest SNAPSHOT PULL crosses nodes: `spt endpoint digest <[subnet:]id@node>` (including `--after <seq>` incremental polling) resolves and serves under the EXISTING address gate — the CROSS_NODE_M4 qualified-address refusal lifts for the pull verb only. The structured-delta stream stays node-local until a real cross-node subscriber exists (ADR-0048 decision 5, defer-until-consumer; operator-ruled 2026-07-24). Access policy is NOT new — fetch was ratified address-gated long ago; this is routing. Composition note: REQ-DIGEST-SEAL-ON-IDLE's stable seqs are what make remote --after polling trustworthy. Forcing customer: spt-mobile 'view live digest of ANY endpoint' (host proxies transparently once the refusal lifts). Gate: int — two-node rig: a qualified digest pull from the non-hosting node returns the hosting node's buffer; --after returns only rows past the cursor; the address gate still refuses a non-resolvable caller.",
2026-07-26T22:33:02.8556140Z       "requiredStages": [
2026-07-26T22:33:02.8556239Z         "doc",
2026-07-26T22:33:02.8556339Z         "impl",
2026-07-26T22:33:02.8556445Z         "unit",
2026-07-26T22:33:02.8556548Z         "int"
2026-07-26T22:33:02.8556654Z       ],
2026-07-26T22:33:02.8556755Z       "stages": {
2026-07-26T22:33:02.8556854Z         "doc": {
2026-07-26T22:33:02.8556964Z           "complete": true,
2026-07-26T22:33:02.8557094Z           "evidence": [
2026-07-26T22:33:02.8557196Z             {
2026-07-26T22:33:02.8557368Z               "path": "docs-site/src/reference/json-shapes.md",
2026-07-26T22:33:02.8557497Z               "line": 34
2026-07-26T22:33:02.8557601Z             },
2026-07-26T22:33:02.8557697Z             {
2026-07-26T22:33:02.8557850Z               "path": "docs/adr/0048-idle-edge-contract.md",
2026-07-26T22:33:02.8557958Z               "line": 119
2026-07-26T22:33:02.8558060Z             }
2026-07-26T22:33:02.8558165Z           ]
2026-07-26T22:33:02.8558269Z         },
2026-07-26T22:33:02.8558370Z         "impl": {
2026-07-26T22:33:02.8558493Z           "complete": true,
2026-07-26T22:33:02.8558607Z           "evidence": [
2026-07-26T22:33:02.8558713Z             {
2026-07-26T22:33:02.8558860Z               "path": "crates/spt-daemon/src/digestlink.rs",
2026-07-26T22:33:02.8559042Z               "line": 21
2026-07-26T22:33:02.8559141Z             },
2026-07-26T22:33:02.8559251Z             {
2026-07-26T22:33:02.8559404Z               "path": "crates/spt-daemon/src/digestlink.rs",
2026-07-26T22:33:02.8559517Z               "line": 84
2026-07-26T22:33:02.8559617Z             },
2026-07-26T22:33:02.8559740Z             {
2026-07-26T22:33:02.8559886Z               "path": "crates/spt-daemon/src/digestlink.rs",
2026-07-26T22:33:02.8560002Z               "line": 108
2026-07-26T22:33:02.8560106Z             },
2026-07-26T22:33:02.8560216Z             {
2026-07-26T22:33:02.8560360Z               "path": "crates/spt-daemon/src/digestlink.rs",
2026-07-26T22:33:02.8560483Z               "line": 163
2026-07-26T22:33:02.8560584Z             },
2026-07-26T22:33:02.8560684Z             {
2026-07-26T22:33:02.8560825Z               "path": "crates/spt-daemon/src/digestlink.rs",
2026-07-26T22:33:02.8560941Z               "line": 214
2026-07-26T22:33:02.8561041Z             },
2026-07-26T22:33:02.8561150Z             {
2026-07-26T22:33:02.8561308Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8561418Z               "line": 118
2026-07-26T22:33:02.8561528Z             },
2026-07-26T22:33:02.8561623Z             {
2026-07-26T22:33:02.8561775Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8561989Z               "line": 138
2026-07-26T22:33:02.8562094Z             },
2026-07-26T22:33:02.8562196Z             {
2026-07-26T22:33:02.8562338Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8562451Z               "line": 1079
2026-07-26T22:33:02.8562546Z             },
2026-07-26T22:33:02.8562649Z             {
2026-07-26T22:33:02.8562811Z               "path": "crates/spt-net/src/net/digestpull.rs",
2026-07-26T22:33:02.8562912Z               "line": 29
2026-07-26T22:33:02.8563007Z             },
2026-07-26T22:33:02.8563107Z             {
2026-07-26T22:33:02.8563265Z               "path": "crates/spt-net/src/net/digestpull.rs",
2026-07-26T22:33:02.8563368Z               "line": 48
2026-07-26T22:33:02.8563465Z             },
2026-07-26T22:33:02.8563660Z             {
2026-07-26T22:33:02.8563799Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8563908Z               "line": 1576
2026-07-26T22:33:02.8564027Z             },
2026-07-26T22:33:02.8564123Z             {
2026-07-26T22:33:02.8564255Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8564361Z               "line": 1585
2026-07-26T22:33:02.8564452Z             },
2026-07-26T22:33:02.8564556Z             {
2026-07-26T22:33:02.8564686Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8564791Z               "line": 1668
2026-07-26T22:33:02.8564885Z             },
2026-07-26T22:33:02.8564984Z             {
2026-07-26T22:33:02.8565128Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:02.8565230Z               "line": 663
2026-07-26T22:33:02.8565339Z             },
2026-07-26T22:33:02.8565441Z             {
2026-07-26T22:33:02.8565578Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:02.8565683Z               "line": 715
2026-07-26T22:33:02.8565788Z             }
2026-07-26T22:33:02.8565888Z           ]
2026-07-26T22:33:02.8565988Z         },
2026-07-26T22:33:02.8566094Z         "int": {
2026-07-26T22:33:02.8566212Z           "complete": true,
2026-07-26T22:33:02.8566308Z           "evidence": [
2026-07-26T22:33:02.8566413Z             {
2026-07-26T22:33:02.8566575Z               "path": "crates/spt-daemon/tests/digest_cross_node.rs",
2026-07-26T22:33:02.8566681Z               "line": 216
2026-07-26T22:33:02.8566784Z             },
2026-07-26T22:33:02.8566884Z             {
2026-07-26T22:33:02.8567043Z               "path": "crates/spt-daemon/tests/digest_cross_node.rs",
2026-07-26T22:33:02.8567152Z               "line": 283
2026-07-26T22:33:02.8567257Z             },
2026-07-26T22:33:02.8567363Z             {
2026-07-26T22:33:02.8567528Z               "path": "crates/spt-daemon/tests/digest_cross_node.rs",
2026-07-26T22:33:02.8567630Z               "line": 321
2026-07-26T22:33:02.8567729Z             },
2026-07-26T22:33:02.8567833Z             {
2026-07-26T22:33:02.8568000Z               "path": "crates/spt-daemon/tests/digest_cross_node.rs",
2026-07-26T22:33:02.8568104Z               "line": 381
2026-07-26T22:33:02.8568214Z             },
2026-07-26T22:33:02.8568310Z             {
2026-07-26T22:33:02.8568481Z               "path": "crates/spt-daemon/tests/digest_cross_node.rs",
2026-07-26T22:33:02.8568592Z               "line": 481
2026-07-26T22:33:02.8568696Z             },
2026-07-26T22:33:02.8568791Z             {
2026-07-26T22:33:02.8569029Z               "path": "crates/spt-daemon/tests/digest_cross_node.rs",
2026-07-26T22:33:02.8569144Z               "line": 539
2026-07-26T22:33:02.8569240Z             },
2026-07-26T22:33:02.8569344Z             {
2026-07-26T22:33:02.8569507Z               "path": "crates/spt-daemon/tests/digest_cross_node.rs",
2026-07-26T22:33:02.8569612Z               "line": 627
2026-07-26T22:33:02.8569716Z             },
2026-07-26T22:33:02.8569816Z             {
2026-07-26T22:33:02.8569973Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:02.8570087Z               "line": 407
2026-07-26T22:33:02.8570192Z             },
2026-07-26T22:33:02.8570390Z             {
2026-07-26T22:33:02.8570543Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:02.8570652Z               "line": 1692
2026-07-26T22:33:02.8570756Z             }
2026-07-26T22:33:02.8570848Z           ]
2026-07-26T22:33:02.8570953Z         },
2026-07-26T22:33:02.8571057Z         "unit": {
2026-07-26T22:33:02.8571177Z           "complete": true,
2026-07-26T22:33:02.8571300Z           "evidence": [
2026-07-26T22:33:02.8571405Z             {
2026-07-26T22:33:02.8571558Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8571663Z               "line": 1492
2026-07-26T22:33:02.8571763Z             },
2026-07-26T22:33:02.8571868Z             {
2026-07-26T22:33:02.8572016Z               "path": "crates/spt-net/src/net/digestpull.rs",
2026-07-26T22:33:02.8572117Z               "line": 84
2026-07-26T22:33:02.8572316Z             },
2026-07-26T22:33:02.8572418Z             {
2026-07-26T22:33:02.8572583Z               "path": "crates/spt-net/src/net/digestpull.rs",
2026-07-26T22:33:02.8572704Z               "line": 122
2026-07-26T22:33:02.8572808Z             },
2026-07-26T22:33:02.8572902Z             {
2026-07-26T22:33:02.8573054Z               "path": "crates/spt-net/src/net/digestpull.rs",
2026-07-26T22:33:02.8573153Z               "line": 158
2026-07-26T22:33:02.8573257Z             },
2026-07-26T22:33:02.8573357Z             {
2026-07-26T22:33:02.8573506Z               "path": "crates/spt-net/src/net/digestpull.rs",
2026-07-26T22:33:02.8573614Z               "line": 184
2026-07-26T22:33:02.8573711Z             },
2026-07-26T22:33:02.8573811Z             {
2026-07-26T22:33:02.8573948Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8574059Z               "line": 17720
2026-07-26T22:33:02.8574164Z             }
2026-07-26T22:33:02.8574262Z           ]
2026-07-26T22:33:02.8574364Z         }
2026-07-26T22:33:02.8574468Z       }
2026-07-26T22:33:02.8574568Z     },
2026-07-26T22:33:02.8574670Z     {
2026-07-26T22:33:02.8574792Z       "id": "REQ-DIGEST-CURSOR",
2026-07-26T22:33:02.8578474Z       "title": "`spt endpoint digest` gains incremental turn-end consumption (extends REQ-TERM-4/5): `--last <N>` = the last N TURNS (the digest's natural unit; --last 1 = the latest turn = turn-end output); a per-entry STABLE SOURCE-DERIVED `seq` in the --json output (deterministic from the entry's append position in the source — transcript record index across the session ledger / digest.log index — so a live re-projection yields the same seq for the same committed entry; NOT a window-position index that renumbers on slide); `--after <seq>` = entries newer than seq still in the window (full window + signal if seq predates it, mirroring the version-slide full-refresh). An in-flight (still-growing) entry is flagged `partial: true` with NO stable seq until finalized (consumer reprocesses partial, skips <= seq). Also emit per-entry `ts` where present (seq is the authoritative dedup+cursor key). The digest's agent text is sufficient fidelity (no raw-source mode). BINDING doc-guidance: an adapter's [digest] extractor / api digest-entry MUST classify delivered user-facing messages as turn-opening `input` (equiv to direct PTY user-input), else messaging-driven sessions collapse into a few giant turns and --last/seq lose granularity. (v0.16.0)",
2026-07-26T22:33:02.8578646Z       "requiredStages": [
2026-07-26T22:33:02.8578755Z         "doc",
2026-07-26T22:33:02.8578861Z         "impl",
2026-07-26T22:33:02.8579065Z         "unit"
2026-07-26T22:33:02.8579161Z       ],
2026-07-26T22:33:02.8579261Z       "stages": {
2026-07-26T22:33:02.8579365Z         "doc": {
2026-07-26T22:33:02.8579486Z           "complete": true,
2026-07-26T22:33:02.8579589Z           "evidence": [
2026-07-26T22:33:02.8579689Z             {
2026-07-26T22:33:02.8579810Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:02.8579923Z               "line": 420
2026-07-26T22:33:02.8580028Z             },
2026-07-26T22:33:02.8580134Z             {
2026-07-26T22:33:02.8580367Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:02.8580464Z               "line": 437
2026-07-26T22:33:02.8580571Z             }
2026-07-26T22:33:02.8580675Z           ]
2026-07-26T22:33:02.8580781Z         },
2026-07-26T22:33:02.8580879Z         "impl": {
2026-07-26T22:33:02.8580997Z           "complete": true,
2026-07-26T22:33:02.8581098Z           "evidence": [
2026-07-26T22:33:02.8581207Z             {
2026-07-26T22:33:02.8581351Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:02.8581470Z               "line": 231
2026-07-26T22:33:02.8581569Z             },
2026-07-26T22:33:02.8581670Z             {
2026-07-26T22:33:02.8581804Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:02.8581922Z               "line": 297
2026-07-26T22:33:02.8582029Z             },
2026-07-26T22:33:02.8582133Z             {
2026-07-26T22:33:02.8582377Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:02.8582495Z               "line": 439
2026-07-26T22:33:02.8582609Z             },
2026-07-26T22:33:02.8582710Z             {
2026-07-26T22:33:02.8582857Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:02.8582973Z               "line": 82
2026-07-26T22:33:02.8583067Z             },
2026-07-26T22:33:02.8583172Z             {
2026-07-26T22:33:02.8583312Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:02.8583434Z               "line": 124
2026-07-26T22:33:02.8583528Z             },
2026-07-26T22:33:02.8583638Z             {
2026-07-26T22:33:02.8583774Z               "path": "crates/spt-term/src/digest.rs",
2026-07-26T22:33:02.8583883Z               "line": 82
2026-07-26T22:33:02.8583980Z             },
2026-07-26T22:33:02.8584084Z             {
2026-07-26T22:33:02.8584222Z               "path": "crates/spt-term/src/digest.rs",
2026-07-26T22:33:02.8584380Z               "line": 95
2026-07-26T22:33:02.8584475Z             },
2026-07-26T22:33:02.8584576Z             {
2026-07-26T22:33:02.8584709Z               "path": "crates/spt-term/src/digest.rs",
2026-07-26T22:33:02.8584837Z               "line": 133
2026-07-26T22:33:02.8584938Z             },
2026-07-26T22:33:02.8585047Z             {
2026-07-26T22:33:02.8585186Z               "path": "crates/spt-term/src/digest.rs",
2026-07-26T22:33:02.8585296Z               "line": 143
2026-07-26T22:33:02.8585395Z             },
2026-07-26T22:33:02.8585501Z             {
2026-07-26T22:33:02.8585639Z               "path": "crates/spt-term/src/digest.rs",
2026-07-26T22:33:02.8585749Z               "line": 168
2026-07-26T22:33:02.8585845Z             },
2026-07-26T22:33:02.8585945Z             {
2026-07-26T22:33:02.8586095Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8586210Z               "line": 213
2026-07-26T22:33:02.8586313Z             },
2026-07-26T22:33:02.8586460Z             {
2026-07-26T22:33:02.8586647Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8586760Z               "line": 347
2026-07-26T22:33:02.8586861Z             },
2026-07-26T22:33:02.8586952Z             {
2026-07-26T22:33:02.8587143Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8587285Z               "line": 355
2026-07-26T22:33:02.8587399Z             },
2026-07-26T22:33:02.8587500Z             {
2026-07-26T22:33:02.8587657Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8587767Z               "line": 372
2026-07-26T22:33:02.8587867Z             },
2026-07-26T22:33:02.8587967Z             {
2026-07-26T22:33:02.8588116Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8588225Z               "line": 423
2026-07-26T22:33:02.8588334Z             },
2026-07-26T22:33:02.8588440Z             {
2026-07-26T22:33:02.8588581Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8588692Z               "line": 501
2026-07-26T22:33:02.8588798Z             },
2026-07-26T22:33:02.8588896Z             {
2026-07-26T22:33:02.8589101Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8589329Z               "line": 507
2026-07-26T22:33:02.8589431Z             },
2026-07-26T22:33:02.8589526Z             {
2026-07-26T22:33:02.8589668Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8589778Z               "line": 1575
2026-07-26T22:33:02.8589878Z             },
2026-07-26T22:33:02.8589973Z             {
2026-07-26T22:33:02.8590103Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8590212Z               "line": 1620
2026-07-26T22:33:02.8590307Z             },
2026-07-26T22:33:02.8590408Z             {
2026-07-26T22:33:02.8590527Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8590647Z               "line": 1630
2026-07-26T22:33:02.8590751Z             },
2026-07-26T22:33:02.8590851Z             {
2026-07-26T22:33:02.8591089Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8591198Z               "line": 1736
2026-07-26T22:33:02.8591298Z             },
2026-07-26T22:33:02.8591407Z             {
2026-07-26T22:33:02.8591529Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8591644Z               "line": 1813
2026-07-26T22:33:02.8591749Z             }
2026-07-26T22:33:02.8591853Z           ]
2026-07-26T22:33:02.8591958Z         },
2026-07-26T22:33:02.8592069Z         "int": {
2026-07-26T22:33:02.8592182Z           "complete": false,
2026-07-26T22:33:02.8592303Z           "evidence": []
2026-07-26T22:33:02.8592402Z         },
2026-07-26T22:33:02.8592516Z         "unit": {
2026-07-26T22:33:02.8592636Z           "complete": true,
2026-07-26T22:33:02.8592745Z           "evidence": [
2026-07-26T22:33:02.8592850Z             {
2026-07-26T22:33:02.8593007Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:02.8593112Z               "line": 391
2026-07-26T22:33:02.8593223Z             },
2026-07-26T22:33:02.8593336Z             {
2026-07-26T22:33:02.8593484Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:02.8593604Z               "line": 405
2026-07-26T22:33:02.8593713Z             },
2026-07-26T22:33:02.8593814Z             {
2026-07-26T22:33:02.8593970Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:02.8594079Z               "line": 433
2026-07-26T22:33:02.8594198Z             },
2026-07-26T22:33:02.8594292Z             {
2026-07-26T22:33:02.8594448Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8594564Z               "line": 905
2026-07-26T22:33:02.8594678Z             },
2026-07-26T22:33:02.8594782Z             {
2026-07-26T22:33:02.8594931Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8595040Z               "line": 956
2026-07-26T22:33:02.8595151Z             },
2026-07-26T22:33:02.8595255Z             {
2026-07-26T22:33:02.8595407Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8595522Z               "line": 970
2026-07-26T22:33:02.8595622Z             },
2026-07-26T22:33:02.8595731Z             {
2026-07-26T22:33:02.8595875Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8595994Z               "line": 1006
2026-07-26T22:33:02.8596100Z             },
2026-07-26T22:33:02.8596208Z             {
2026-07-26T22:33:02.8596356Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8596467Z               "line": 1246
2026-07-26T22:33:02.8596570Z             },
2026-07-26T22:33:02.8596679Z             {
2026-07-26T22:33:02.8596808Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8596925Z               "line": 17634
2026-07-26T22:33:02.8597025Z             },
2026-07-26T22:33:02.8597131Z             {
2026-07-26T22:33:02.8597263Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8597383Z               "line": 17653
2026-07-26T22:33:02.8597488Z             },
2026-07-26T22:33:02.8597602Z             {
2026-07-26T22:33:02.8597727Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8597926Z               "line": 17690
2026-07-26T22:33:02.8598028Z             }
2026-07-26T22:33:02.8598131Z           ]
2026-07-26T22:33:02.8598231Z         }
2026-07-26T22:33:02.8598337Z       }
2026-07-26T22:33:02.8598442Z     },
2026-07-26T22:33:02.8598551Z     {
2026-07-26T22:33:02.8598685Z       "id": "REQ-DIGEST-FETCHER-STRATEGY",
2026-07-26T22:33:02.8602699Z       "title": "Bug #17 (W6b, closes eel-a end-to-end): [digest] gains a `fetcher` strategy mirroring [history]'s locate/normalize split (CONTEXT §history: [digest] mirrors history's two strategies — locate ownership). ROOT: the pre-W6b [digest] had only the locate_normalize analog (spt-core resolves ONE `source` template + pre-reads the file), which CANNOT express a PARTITIONED transcript layout — CC's projects/<munge(cwd)>/<session_id>.jsonl or a date-globbed rollout tree — the exact case CONTEXT already assigns to the adapter. spt-core (correctly) provides NO {project}/slug key (harness-specific cwd munging = the charter violation FIX-A was rejected for). Fix: strategy = fetcher makes the ADAPTER's extractor locate + read + emit normalized records; spt-core runs it bounded (no locate, no pre-read, no stdin) and consumes stdout, feeding only the harness-NEUTRAL inputs it owns — {session_id}, the perch-bound {cwd} (info.json.cwd), and the captured [env] direction=read vars (W6/REQ-DIGEST-PROFILE-ENV) — so the extractor globs the unique {session_id} under {read-var-root}/projects/ with no slug. Keeps locate_normalize (default, back-compat) for a trivial single-file harness. Distinct capability from REQ-DIGEST-PROFILE-ENV (which supplies the root env). See docs/NEXT-MILESTONE-BUG-TRIAGE.md #17.",
2026-07-26T22:33:02.8602991Z       "requiredStages": [
2026-07-26T22:33:02.8603100Z         "doc",
2026-07-26T22:33:02.8603211Z         "impl",
2026-07-26T22:33:02.8603306Z         "unit",
2026-07-26T22:33:02.8603434Z         "int"
2026-07-26T22:33:02.8603535Z       ],
2026-07-26T22:33:02.8603639Z       "stages": {
2026-07-26T22:33:02.8603739Z         "doc": {
2026-07-26T22:33:02.8603878Z           "complete": true,
2026-07-26T22:33:02.8603973Z           "evidence": [
2026-07-26T22:33:02.8604079Z             {
2026-07-26T22:33:02.8604249Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-07-26T22:33:02.8604359Z               "line": 291
2026-07-26T22:33:02.8604465Z             },
2026-07-26T22:33:02.8604568Z             {
2026-07-26T22:33:02.8604686Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:02.8604787Z               "line": 270
2026-07-26T22:33:02.8604899Z             }
2026-07-26T22:33:02.8604994Z           ]
2026-07-26T22:33:02.8605095Z         },
2026-07-26T22:33:02.8605205Z         "impl": {
2026-07-26T22:33:02.8605323Z           "complete": true,
2026-07-26T22:33:02.8605429Z           "evidence": [
2026-07-26T22:33:02.8605533Z             {
2026-07-26T22:33:02.8605686Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:02.8605810Z               "line": 280
2026-07-26T22:33:02.8605914Z             },
2026-07-26T22:33:02.8606025Z             {
2026-07-26T22:33:02.8606163Z               "path": "crates/spt-live/src/digest.rs",
2026-07-26T22:33:02.8606277Z               "line": 103
2026-07-26T22:33:02.8606383Z             },
2026-07-26T22:33:02.8606491Z             {
2026-07-26T22:33:02.8606616Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8606740Z               "line": 11574
2026-07-26T22:33:02.8606840Z             }
2026-07-26T22:33:02.8606946Z           ]
2026-07-26T22:33:02.8607041Z         },
2026-07-26T22:33:02.8607145Z         "int": {
2026-07-26T22:33:02.8607263Z           "complete": true,
2026-07-26T22:33:02.8607382Z           "evidence": [
2026-07-26T22:33:02.8607485Z             {
2026-07-26T22:33:02.8607633Z               "path": "crates/spt-live/src/digest.rs",
2026-07-26T22:33:02.8607739Z               "line": 242
2026-07-26T22:33:02.8607852Z             }
2026-07-26T22:33:02.8607953Z           ]
2026-07-26T22:33:02.8608048Z         },
2026-07-26T22:33:02.8608152Z         "unit": {
2026-07-26T22:33:02.8608377Z           "complete": true,
2026-07-26T22:33:02.8608481Z           "evidence": [
2026-07-26T22:33:02.8608592Z             {
2026-07-26T22:33:02.8608749Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.8608863Z               "line": 1960
2026-07-26T22:33:02.8609035Z             }
2026-07-26T22:33:02.8609149Z           ]
2026-07-26T22:33:02.8609250Z         }
2026-07-26T22:33:02.8609354Z       }
2026-07-26T22:33:02.8609445Z     },
2026-07-26T22:33:02.8609551Z     {
2026-07-26T22:33:02.8609692Z       "id": "REQ-DIGEST-GENERATION-SUPERSEDE",
2026-07-26T22:33:02.8617634Z       "title": "W3 (LIFECYCLE-TRUTH, digest projection truth — flynn filing spt-mobile d0aa3f4): a one-shot `endpoint digest --json` snapshot must return each logical activity row ONCE across a checkpoint/resume, not once per seq-generation. ROOT (spt-core-side, not a consumer bug): the K-session span (digest.rs activity_spanned, SPAN_SESSIONS=5) runs the [digest] extractor per session file and tags each row seq=(ledger_ordinal<<32)|localseq (REQ-DIGEST-CURSOR). A checkpoint/resume (self-/clear + Psyche rebuild) makes the harness REPLAY the prior generation's transcript into the NEW session file, so the ancestor's rows appear in BOTH the ancestor file AND the resume file at the SAME localseq — the span UNIONS them, one logical row surfacing under two full seqs (gen23,local208) + (gen25,local208), identical text/ts/localseq. Consumers dedup by exact seq (the documented authoritative key) so nothing collapses -> duplicate rows in every snapshot / `--after` view (`--follow from:0` is CLEAN — it reads current-generation only; the SPAN is the sole culprit). The trigger cannot disambiguate: `api boundary clear` records SessionTrigger::Clear for BOTH a fresh /clear (disjoint) and a carry-forward checkpoint (reporting.rs:94) — so a structural skip-ancestor needs new boundary metadata + adapter cooperation, deferred. FIX (doyle ruling — flynn Option 1 Supersede, projection-local, source-independent): within the span, collapse cross-generation replay dupes — an Activity record from an OLDER ordinal is dropped when an identical logical record (role, ts, text, tool) exists under a NEWER ordinal; keep the NEWEST-ordinal occurrence so the surviving seq is the live generation (snapshot + follow agree on seq). Cross-generation ONLY (never dedup within one ordinal — a session cannot replay itself; identical within-gen rows are real). Supersede runs on the raw span items BEFORE the window fold (project_timeline) so window_turns counts real turns, not phantoms; and a boundary divider adjacent to a now-fully-superseded ancestor is not left orphaned. Context entries (REQ-TERM-7, single digest.log) are not per-session-spanned -> untouched. Int = a two-session span rig where session B's extracted lines are a superset replay of A (same ts/text at same localseq) + B's own new tail: RED-first (pre-fix shows every A row twice); post-fix each logical row appears ONCE under B's generation, B's tail intact, the /clear boundary marker preserved when A retains rows.",
2026-07-26T22:33:02.8618040Z       "requiredStages": [
2026-07-26T22:33:02.8618150Z         "impl",
2026-07-26T22:33:02.8618251Z         "unit",
2026-07-26T22:33:02.8618355Z         "int"
2026-07-26T22:33:02.8618455Z       ],
2026-07-26T22:33:02.8618556Z       "stages": {
2026-07-26T22:33:02.8618660Z         "doc": {
2026-07-26T22:33:02.8618779Z           "complete": false,
2026-07-26T22:33:02.8618894Z           "evidence": []
2026-07-26T22:33:02.8619074Z         },
2026-07-26T22:33:02.8619181Z         "impl": {
2026-07-26T22:33:02.8619294Z           "complete": true,
2026-07-26T22:33:02.8619399Z           "evidence": [
2026-07-26T22:33:02.8619514Z             {
2026-07-26T22:33:02.8619671Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:02.8619787Z               "line": 197
2026-07-26T22:33:02.8619895Z             },
2026-07-26T22:33:02.8620005Z             {
2026-07-26T22:33:02.8620144Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:02.8620373Z               "line": 331
2026-07-26T22:33:02.8620478Z             },
2026-07-26T22:33:02.8620581Z             {
2026-07-26T22:33:02.8620723Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:02.8620839Z               "line": 357
2026-07-26T22:33:02.8620943Z             }
2026-07-26T22:33:02.8621048Z           ]
2026-07-26T22:33:02.8621149Z         },
2026-07-26T22:33:02.8621263Z         "int": {
2026-07-26T22:33:02.8621378Z           "complete": true,
2026-07-26T22:33:02.8621487Z           "evidence": [
2026-07-26T22:33:02.8621587Z             {
2026-07-26T22:33:02.8621826Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-07-26T22:33:02.8621988Z               "line": 190
2026-07-26T22:33:02.8622140Z             }
2026-07-26T22:33:02.8622293Z           ]
2026-07-26T22:33:02.8622603Z         },
2026-07-26T22:33:02.8622718Z         "unit": {
2026-07-26T22:33:02.8622835Z           "complete": true,
2026-07-26T22:33:02.8622959Z           "evidence": [
2026-07-26T22:33:02.8623059Z             {
2026-07-26T22:33:02.8623219Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:02.8623329Z               "line": 688
2026-07-26T22:33:02.8623435Z             },
2026-07-26T22:33:02.8623533Z             {
2026-07-26T22:33:02.8623678Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:02.8623792Z               "line": 720
2026-07-26T22:33:02.8623896Z             },
2026-07-26T22:33:02.8623997Z             {
2026-07-26T22:33:02.8624148Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:02.8624269Z               "line": 733
2026-07-26T22:33:02.8624368Z             },
2026-07-26T22:33:02.8624468Z             {
2026-07-26T22:33:02.8624607Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:02.8624716Z               "line": 752
2026-07-26T22:33:02.8624816Z             }
2026-07-26T22:33:02.8624908Z           ]
2026-07-26T22:33:02.8625012Z         }
2026-07-26T22:33:02.8625116Z       }
2026-07-26T22:33:02.8625223Z     },
2026-07-26T22:33:02.8625322Z     {
2026-07-26T22:33:02.8625470Z       "id": "REQ-DIGEST-JSON-SELF-CONTAINED",
2026-07-26T22:33:02.8633581Z       "title": "TEARDOWN-AUTHORITY W4 (perri adapter-surface finding 2026-07-19, doyle-grounded and RE-SCOPED; title AMENDED at gate 2026-07-19 — the original welded version to --after polling, todlando falsified it from digesthub.rs/cli.rs and doyle ruled the amendment rides the wave: fifth instance of the claim-keyed-on-the-wrong-thing class, this one in the REQ registry itself): `spt endpoint digest <id> --json` must be self-contained on stdout. Today the digest snapshot version is NOT a field of the --json object at all — it exists ONLY in the DIGEST:<id> version=N trailer that cmd_digest eprintln!s at cli.rs:1619 — so a JSON consumer that wants it is FORCED to parse stderr. NUMBER-SPACE TRUTH (the amendment): version is digesthub's monotonic PROJECTION counter — it bumps when the projected digest CHANGES, serves as the --follow from_version floor and a change-detection cursor, and is NOT valid --after input; --after filters on entry seq ((ledger_ordinal<<32)|line_idx), a different number space, so a version passed as --after predates the window every time. NOTE the corrected history (perri's original RCA framed this as a fleet outage and doyle falsified it; perri confirmed): the trailer has been on STDERR since it was added 2026-06-03 (16f4c8e) and no stdout trailer ever existed, so stdout-only consumers never choked — this is a CONTRACT-COMPLETENESS defect, low priority, NOT an outage. FIX: (a) emit version as a top-level integer field inside the --json object (field name pinned by the consumer — perri's adapter parses 'version' — so no second round is needed), alongside the existing after_predates_window signal; (b) gate the stderr trailer on the non-json path so --json leaves stderr clean while the human path keeps its status line. Result: --json stdout = pure self-contained JSON including the version, safe whether the consumer reads stdout-only OR merges 2>&1. Additive to the JSON shape (REQ-CLI-JSON evolution rule). The published doc must state the number-space split with the EXPLICIT NEGATIVE (version is NOT valid --after input) — the original title proves the misuse is the natural reading. Gate: doc — the json-shapes digest section carries version, the stderr-clean --json contract, the complete entry-kind enum with per-kind produced-vs-injected provenance, and the seq/version asymmetry incl the explicit negative; impl — version field on the --json snapshot path + non-json-gated trailer; unit — the --json object carries version and stderr carries no DIGEST: trailer, the non-json path still prints it (predates ordering included), and the behavior-change sweep confirms no existing test asserts the old --json shape or the trailer presence under --json.",
2026-07-26T22:33:02.8634074Z       "requiredStages": [
2026-07-26T22:33:02.8634180Z         "doc",
2026-07-26T22:33:02.8634290Z         "impl",
2026-07-26T22:33:02.8634446Z         "unit"
2026-07-26T22:33:02.8634552Z       ],
2026-07-26T22:33:02.8634652Z       "stages": {
2026-07-26T22:33:02.8634751Z         "doc": {
2026-07-26T22:33:02.8634877Z           "complete": true,
2026-07-26T22:33:02.8638435Z           "evidence": [
2026-07-26T22:33:02.8638558Z             {
2026-07-26T22:33:02.8638741Z               "path": "docs-site/src/reference/json-shapes.md",
2026-07-26T22:33:02.8638858Z               "line": 29
2026-07-26T22:33:02.8639049Z             }
2026-07-26T22:33:02.8639160Z           ]
2026-07-26T22:33:02.8639265Z         },
2026-07-26T22:33:02.8639376Z         "impl": {
2026-07-26T22:33:02.8639494Z           "complete": true,
2026-07-26T22:33:02.8639609Z           "evidence": [
2026-07-26T22:33:02.8639714Z             {
2026-07-26T22:33:02.8639861Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8639982Z               "line": 1812
2026-07-26T22:33:02.8640082Z             }
2026-07-26T22:33:02.8640185Z           ]
2026-07-26T22:33:02.8640301Z         },
2026-07-26T22:33:02.8640410Z         "int": {
2026-07-26T22:33:02.8640529Z           "complete": false,
2026-07-26T22:33:02.8640649Z           "evidence": []
2026-07-26T22:33:02.8640753Z         },
2026-07-26T22:33:02.8640858Z         "unit": {
2026-07-26T22:33:02.8640978Z           "complete": true,
2026-07-26T22:33:02.8641077Z           "evidence": [
2026-07-26T22:33:02.8641188Z             {
2026-07-26T22:33:02.8641321Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8641430Z               "line": 17819
2026-07-26T22:33:02.8641536Z             },
2026-07-26T22:33:02.8641636Z             {
2026-07-26T22:33:02.8641763Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8641883Z               "line": 17842
2026-07-26T22:33:02.8641978Z             },
2026-07-26T22:33:02.8642087Z             {
2026-07-26T22:33:02.8642212Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8642331Z               "line": 17860
2026-07-26T22:33:02.8642435Z             }
2026-07-26T22:33:02.8642541Z           ]
2026-07-26T22:33:02.8642650Z         }
2026-07-26T22:33:02.8642740Z       }
2026-07-26T22:33:02.8642842Z     },
2026-07-26T22:33:02.8642936Z     {
2026-07-26T22:33:02.8643074Z       "id": "REQ-DIGEST-PROFILE-ENV",
2026-07-26T22:33:02.8645512Z       "title": "Bug #17: spt endpoint digest returns NO_DIGEST for a ccs-profile endpoint (claude-spt:ccs) though [digest] is wired and the transcript exists — under .ccs (CLAUDE_CONFIG_DIR relocation) not .claude. The on-demand digest runs the extractor in the daemon context WITHOUT the endpoint profile transcript-location env, so the env-aware resolver cannot find the relocated transcript. Fix: propagate/persist the endpoint profile transcript-location env (e.g. the ccs CLAUDE_CONFIG_DIR) to the on-demand digest extractor so a profile-relocated transcript resolves; confirm the exact extractor verdict via spt adapter digest-proof. Ownership spt-core (digest env/profile propagation), possibly with a claude-spt extractor-resolver assist. See docs/NEXT-MILESTONE-BUG-TRIAGE.md #17.",
2026-07-26T22:33:02.8645798Z       "requiredStages": [
2026-07-26T22:33:02.8645899Z         "doc",
2026-07-26T22:33:02.8645999Z         "impl",
2026-07-26T22:33:02.8646090Z         "unit"
2026-07-26T22:33:02.8646189Z       ],
2026-07-26T22:33:02.8646295Z       "stages": {
2026-07-26T22:33:02.8646400Z         "doc": {
2026-07-26T22:33:02.8646523Z           "complete": true,
2026-07-26T22:33:02.8646638Z           "evidence": [
2026-07-26T22:33:02.8646739Z             {
2026-07-26T22:33:02.8646860Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:02.8646970Z               "line": 209
2026-07-26T22:33:02.8647074Z             },
2026-07-26T22:33:02.8647177Z             {
2026-07-26T22:33:02.8647297Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:02.8647417Z               "line": 295
2026-07-26T22:33:02.8647622Z             }
2026-07-26T22:33:02.8647731Z           ]
2026-07-26T22:33:02.8647831Z         },
2026-07-26T22:33:02.8647951Z         "impl": {
2026-07-26T22:33:02.8648065Z           "complete": true,
2026-07-26T22:33:02.8648178Z           "evidence": [
2026-07-26T22:33:02.8648280Z             {
2026-07-26T22:33:02.8648437Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:02.8648546Z               "line": 270
2026-07-26T22:33:02.8648647Z             },
2026-07-26T22:33:02.8648746Z             {
2026-07-26T22:33:02.8648900Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.8649075Z               "line": 381
2026-07-26T22:33:02.8649176Z             },
2026-07-26T22:33:02.8649272Z             {
2026-07-26T22:33:02.8649456Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.8649618Z               "line": 405
2026-07-26T22:33:02.8649735Z             },
2026-07-26T22:33:02.8649830Z             {
2026-07-26T22:33:02.8649994Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.8650107Z               "line": 432
2026-07-26T22:33:02.8650227Z             },
2026-07-26T22:33:02.8650332Z             {
2026-07-26T22:33:02.8650479Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.8650584Z               "line": 225
2026-07-26T22:33:02.8650679Z             },
2026-07-26T22:33:02.8650784Z             {
2026-07-26T22:33:02.8650932Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.8651041Z               "line": 494
2026-07-26T22:33:02.8651138Z             },
2026-07-26T22:33:02.8651242Z             {
2026-07-26T22:33:02.8651380Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8651496Z               "line": 11565
2026-07-26T22:33:02.8651594Z             }
2026-07-26T22:33:02.8651695Z           ]
2026-07-26T22:33:02.8651796Z         },
2026-07-26T22:33:02.8651895Z         "int": {
2026-07-26T22:33:02.8652019Z           "complete": false,
2026-07-26T22:33:02.8652120Z           "evidence": []
2026-07-26T22:33:02.8652224Z         },
2026-07-26T22:33:02.8652323Z         "unit": {
2026-07-26T22:33:02.8652447Z           "complete": true,
2026-07-26T22:33:02.8652557Z           "evidence": [
2026-07-26T22:33:02.8652652Z             {
2026-07-26T22:33:02.8652791Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.8652909Z               "line": 1101
2026-07-26T22:33:02.8653009Z             },
2026-07-26T22:33:02.8653111Z             {
2026-07-26T22:33:02.8653257Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.8653363Z               "line": 1132
2026-07-26T22:33:02.8653458Z             },
2026-07-26T22:33:02.8653558Z             {
2026-07-26T22:33:02.8653707Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.8653815Z               "line": 1370
2026-07-26T22:33:02.8653916Z             },
2026-07-26T22:33:02.8654012Z             {
2026-07-26T22:33:02.8654158Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.8654259Z               "line": 790
2026-07-26T22:33:02.8654361Z             },
2026-07-26T22:33:02.8654568Z             {
2026-07-26T22:33:02.8654711Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.8654814Z               "line": 2256
2026-07-26T22:33:02.8654918Z             }
2026-07-26T22:33:02.8655019Z           ]
2026-07-26T22:33:02.8655128Z         }
2026-07-26T22:33:02.8655223Z       }
2026-07-26T22:33:02.8655329Z     },
2026-07-26T22:33:02.8655429Z     {
2026-07-26T22:33:02.8655561Z       "id": "REQ-DIGEST-SEAL-ON-IDLE",
2026-07-26T22:33:02.8658911Z       "title": "A digest turn's records gain their stable `seq` at the endpoint's IDLE TRANSITION — the adapter-reported, already-authoritative turn-finished signal — not at next-user-input arrival (which is demoted to a harmless no-op fallback seal). Kills the mint-then-idle deadlock (liam/spt-progress-tool W16: a finished-but-idle turn stayed partial/seq-less, so a seq-keyed scanner could never see the owner's latest turn until the owner was prompted again; interim drive-one-more-command workaround retires at ship). Sealing is IDEMPOTENT and SEQ-STABLE: it assigns seq to what the log holds at idle; a late-flushing straggler record folds into the sealed turn WITHOUT changing the assigned seq. (ADR-0048 decision 4; rejected: extractor-observed completion = banned heuristic inference class; provisional seqs = scanner bug factory.) Gate: int — the liam field shape RED-first: finish a turn, report idle, do NOT prompt again — the turn is sealed with a stable seq and a scanner keyed on seq sees it; fallback leg: next-input on an already-sealed turn re-seals nothing; straggler leg: a post-idle log record folds in, seq unchanged.",
2026-07-26T22:33:02.8659269Z       "requiredStages": [
2026-07-26T22:33:02.8659388Z         "doc",
2026-07-26T22:33:02.8659498Z         "impl",
2026-07-26T22:33:02.8659607Z         "unit",
2026-07-26T22:33:02.8659707Z         "int"
2026-07-26T22:33:02.8659823Z       ],
2026-07-26T22:33:02.8659931Z       "stages": {
2026-07-26T22:33:02.8660030Z         "doc": {
2026-07-26T22:33:02.8660159Z           "complete": true,
2026-07-26T22:33:02.8660271Z           "evidence": [
2026-07-26T22:33:02.8660371Z             {
2026-07-26T22:33:02.8660530Z               "path": "docs-site/src/reference/json-shapes.md",
2026-07-26T22:33:02.8660647Z               "line": 229
2026-07-26T22:33:02.8660744Z             },
2026-07-26T22:33:02.8660843Z             {
2026-07-26T22:33:02.8661006Z               "path": "docs/adr/0048-idle-edge-contract.md",
2026-07-26T22:33:02.8661102Z               "line": 93
2026-07-26T22:33:02.8661211Z             }
2026-07-26T22:33:02.8661310Z           ]
2026-07-26T22:33:02.8661412Z         },
2026-07-26T22:33:02.8661515Z         "impl": {
2026-07-26T22:33:02.8661620Z           "complete": true,
2026-07-26T22:33:02.8661731Z           "evidence": [
2026-07-26T22:33:02.8661835Z             {
2026-07-26T22:33:02.8661998Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:02.8662108Z               "line": 162
2026-07-26T22:33:02.8662217Z             },
2026-07-26T22:33:02.8662323Z             {
2026-07-26T22:33:02.8662465Z               "path": "crates/spt-term/src/digest.rs",
2026-07-26T22:33:02.8662569Z               "line": 41
2026-07-26T22:33:02.8662680Z             },
2026-07-26T22:33:02.8662780Z             {
2026-07-26T22:33:02.8662921Z               "path": "crates/spt-term/src/digest.rs",
2026-07-26T22:33:02.8663027Z               "line": 181
2026-07-26T22:33:02.8663132Z             },
2026-07-26T22:33:02.8663231Z             {
2026-07-26T22:33:02.8663389Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8663488Z               "line": 435
2026-07-26T22:33:02.8663589Z             }
2026-07-26T22:33:02.8663694Z           ]
2026-07-26T22:33:02.8663794Z         },
2026-07-26T22:33:02.8663899Z         "int": {
2026-07-26T22:33:02.8664014Z           "complete": true,
2026-07-26T22:33:02.8664127Z           "evidence": [
2026-07-26T22:33:02.8664228Z             {
2026-07-26T22:33:02.8664390Z               "path": "crates/spt-daemon/tests/digest_cross_node.rs",
2026-07-26T22:33:02.8664611Z               "line": 216
2026-07-26T22:33:02.8664704Z             },
2026-07-26T22:33:02.8664814Z             {
2026-07-26T22:33:02.8664973Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:02.8665090Z               "line": 1692
2026-07-26T22:33:02.8665190Z             },
2026-07-26T22:33:02.8665281Z             {
2026-07-26T22:33:02.8665436Z               "path": "crates/spt/tests/idle_edge_seal_e2e.rs",
2026-07-26T22:33:02.8665545Z               "line": 123
2026-07-26T22:33:02.8665647Z             }
2026-07-26T22:33:02.8665750Z           ]
2026-07-26T22:33:02.8665850Z         },
2026-07-26T22:33:02.8665956Z         "unit": {
2026-07-26T22:33:02.8666065Z           "complete": true,
2026-07-26T22:33:02.8666175Z           "evidence": [
2026-07-26T22:33:02.8666275Z             {
2026-07-26T22:33:02.8666510Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8666614Z               "line": 1067
2026-07-26T22:33:02.8666723Z             },
2026-07-26T22:33:02.8666824Z             {
2026-07-26T22:33:02.8666971Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8667071Z               "line": 1114
2026-07-26T22:33:02.8667182Z             },
2026-07-26T22:33:02.8667276Z             {
2026-07-26T22:33:02.8667425Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8667544Z               "line": 1142
2026-07-26T22:33:02.8667634Z             },
2026-07-26T22:33:02.8667735Z             {
2026-07-26T22:33:02.8667882Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8668004Z               "line": 1159
2026-07-26T22:33:02.8668110Z             },
2026-07-26T22:33:02.8668213Z             {
2026-07-26T22:33:02.8668359Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8668485Z               "line": 1198
2026-07-26T22:33:02.8668579Z             },
2026-07-26T22:33:02.8668674Z             {
2026-07-26T22:33:02.8668828Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8669032Z               "line": 1219
2026-07-26T22:33:02.8669138Z             },
2026-07-26T22:33:02.8669237Z             {
2026-07-26T22:33:02.8669381Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:02.8669500Z               "line": 1246
2026-07-26T22:33:02.8669600Z             }
2026-07-26T22:33:02.8669701Z           ]
2026-07-26T22:33:02.8669805Z         }
2026-07-26T22:33:02.8669910Z       }
2026-07-26T22:33:02.8670006Z     },
2026-07-26T22:33:02.8670101Z     {
2026-07-26T22:33:02.8670230Z       "id": "REQ-DISPATCH-CLAIM-RETRY",
2026-07-26T22:33:02.8673082Z       "title": "REDISPATCH-TRUTH W1 (ADR-0038, hertz fix C): dispatcher claims are RETRYABLE and outcomes are CLASSIFIED — today claimed.insert(stream_id) happens PRE-spawn (dispatch.rs:206/214) and is never cleared or retried on Unknown/Failed, so one transient worker-setup failure permanently abandons the stream. Distinguish active/retryable vs served vs finished: a transient worker-setup failure releases/requeues the claim (bounded/backoff-shaped); terminal classification outcomes stay terminal and do NOT hot-loop (show the distinction in test, not just code). Gate: impl — claim lifecycle; unit — transient failure requeues + terminal outcome does not (no hot-loop under a persistently-failing stream); int — production-path regression D3: inject ONE transient worker-start failure, prove claim retry recovers the stream with NO duplicate controller/output. HEAVY nextest group at birth. Kin REQ-REDISPATCH-FINISHED-RETIRE, REQ-STREAM-OPENER-DURABLE.",
2026-07-26T22:33:02.8673240Z       "requiredStages": [
2026-07-26T22:33:02.8673344Z         "impl",
2026-07-26T22:33:02.8673448Z         "unit",
2026-07-26T22:33:02.8673548Z         "int"
2026-07-26T22:33:02.8673650Z       ],
2026-07-26T22:33:02.8673762Z       "stages": {
2026-07-26T22:33:02.8673863Z         "doc": {
2026-07-26T22:33:02.8673978Z           "complete": false,
2026-07-26T22:33:02.8674231Z           "evidence": []
2026-07-26T22:33:02.8674331Z         },
2026-07-26T22:33:02.8674430Z         "impl": {
2026-07-26T22:33:02.8674536Z           "complete": true,
2026-07-26T22:33:02.8674645Z           "evidence": [
2026-07-26T22:33:02.8674745Z             {
2026-07-26T22:33:02.8674908Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8675012Z               "line": 310
2026-07-26T22:33:02.8675118Z             },
2026-07-26T22:33:02.8675218Z             {
2026-07-26T22:33:02.8675374Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8675476Z               "line": 356
2026-07-26T22:33:02.8675579Z             }
2026-07-26T22:33:02.8675684Z           ]
2026-07-26T22:33:02.8675783Z         },
2026-07-26T22:33:02.8675887Z         "int": {
2026-07-26T22:33:02.8676001Z           "complete": true,
2026-07-26T22:33:02.8676216Z           "evidence": [
2026-07-26T22:33:02.8676325Z             {
2026-07-26T22:33:02.8676487Z               "path": "crates/spt-daemon/tests/redispatch.rs",
2026-07-26T22:33:02.8676601Z               "line": 571
2026-07-26T22:33:02.8676706Z             }
2026-07-26T22:33:02.8676798Z           ]
2026-07-26T22:33:02.8676897Z         },
2026-07-26T22:33:02.8677001Z         "unit": {
2026-07-26T22:33:02.8677122Z           "complete": true,
2026-07-26T22:33:02.8677221Z           "evidence": [
2026-07-26T22:33:02.8677321Z             {
2026-07-26T22:33:02.8677460Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8677579Z               "line": 1556
2026-07-26T22:33:02.8677675Z             }
2026-07-26T22:33:02.8677779Z           ]
2026-07-26T22:33:02.8677879Z         }
2026-07-26T22:33:02.8677980Z       }
2026-07-26T22:33:02.8678081Z     },
2026-07-26T22:33:02.8678184Z     {
2026-07-26T22:33:02.8678319Z       "id": "REQ-DISPATCH-FALLBACK-CIRCUIT",
2026-07-26T22:33:02.8682021Z       "title": "REDISPATCH-STALL W1 (ADR-0038 Amendment, fixes 1+5): the opener ring-peek fallback fires ONLY on the explicit UnsupportedVerb/old-broker answer — transport timeout/EOF/poison classify Failed and requeue bounded, NEVER a second replay subscriber (today first_line's Err(_) arm at dispatch.rs:414 catches everything; the comment intends old-broker-only). Retries are CLASSIFIED: pre-setup transient may retry; a deadline-poisoned replay is CIRCUIT-BROKEN (global backoff) and a replacement subscriber is never installed until the prior subscriber is fully gone. NOT a revert to the v0.33 burn-the-claim abandonment (rejected): the stream must recover after the breaker window — show it in test. Gate: impl — narrowed fallback arm + breaker; unit — timeout/EOF/poison never reach the peek path while unsupported-verb does + breaker trips and resets + no-reinstall-until-gone; int — T2 (no peek subscriber created on transport errors) + T5 (breaker recovery, the not-abandonment discriminator) + T7 mixed-image N-1 with REAL traffic-carrying streams (handshake-only insufficient); doc — ADR-0038 Amendment. Kin REQ-DISPATCH-CLAIM-RETRY (upgraded, not reverted), REQ-STREAM-OPENER-DURABLE (the N-1 window it narrows).",
2026-07-26T22:33:02.8682207Z       "requiredStages": [
2026-07-26T22:33:02.8682307Z         "doc",
2026-07-26T22:33:02.8682411Z         "impl",
2026-07-26T22:33:02.8682513Z         "unit",
2026-07-26T22:33:02.8682612Z         "int"
2026-07-26T22:33:02.8682712Z       ],
2026-07-26T22:33:02.8682818Z       "stages": {
2026-07-26T22:33:02.8682923Z         "doc": {
2026-07-26T22:33:02.8683046Z           "complete": true,
2026-07-26T22:33:02.8683143Z           "evidence": [
2026-07-26T22:33:02.8683242Z             {
2026-07-26T22:33:02.8683428Z               "path": "docs/adr/0038-broker-stream-lifecycle-truth.md",
2026-07-26T22:33:02.8683547Z               "line": 74
2026-07-26T22:33:02.8683652Z             }
2026-07-26T22:33:02.8683753Z           ]
2026-07-26T22:33:02.8683853Z         },
2026-07-26T22:33:02.8683975Z         "impl": {
2026-07-26T22:33:02.8684089Z           "complete": true,
2026-07-26T22:33:02.8684205Z           "evidence": [
2026-07-26T22:33:02.8684419Z             {
2026-07-26T22:33:02.8684567Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8684671Z               "line": 228
2026-07-26T22:33:02.8684772Z             },
2026-07-26T22:33:02.8684872Z             {
2026-07-26T22:33:02.8685019Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8685125Z               "line": 246
2026-07-26T22:33:02.8685230Z             },
2026-07-26T22:33:02.8685319Z             {
2026-07-26T22:33:02.8685468Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8685577Z               "line": 256
2026-07-26T22:33:02.8685668Z             },
2026-07-26T22:33:02.8685773Z             {
2026-07-26T22:33:02.8685915Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8686022Z               "line": 357
2026-07-26T22:33:02.8686210Z             },
2026-07-26T22:33:02.8686310Z             {
2026-07-26T22:33:02.8686452Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8686575Z               "line": 603
2026-07-26T22:33:02.8686680Z             },
2026-07-26T22:33:02.8686786Z             {
2026-07-26T22:33:02.8686932Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8687043Z               "line": 757
2026-07-26T22:33:02.8687147Z             }
2026-07-26T22:33:02.8687247Z           ]
2026-07-26T22:33:02.8687349Z         },
2026-07-26T22:33:02.8687453Z         "int": {
2026-07-26T22:33:02.8687571Z           "complete": true,
2026-07-26T22:33:02.8687673Z           "evidence": [
2026-07-26T22:33:02.8687772Z             {
2026-07-26T22:33:02.8687944Z               "path": "crates/spt-daemon/tests/redispatch_stall.rs",
2026-07-26T22:33:02.8688053Z               "line": 505
2026-07-26T22:33:02.8688163Z             },
2026-07-26T22:33:02.8688269Z             {
2026-07-26T22:33:02.8688444Z               "path": "crates/spt-daemon/tests/redispatch_stall.rs",
2026-07-26T22:33:02.8688545Z               "line": 565
2026-07-26T22:33:02.8688655Z             },
2026-07-26T22:33:02.8688754Z             {
2026-07-26T22:33:02.8688918Z               "path": "crates/spt-daemon/tests/redispatch_stall.rs",
2026-07-26T22:33:02.8689111Z               "line": 734
2026-07-26T22:33:02.8689211Z             }
2026-07-26T22:33:02.8689315Z           ]
2026-07-26T22:33:02.8689418Z         },
2026-07-26T22:33:02.8689519Z         "unit": {
2026-07-26T22:33:02.8689638Z           "complete": true,
2026-07-26T22:33:02.8689742Z           "evidence": [
2026-07-26T22:33:02.8689848Z             {
2026-07-26T22:33:02.8689986Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8690105Z               "line": 1600
2026-07-26T22:33:02.8690206Z             },
2026-07-26T22:33:02.8690311Z             {
2026-07-26T22:33:02.8690448Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8690587Z               "line": 1636
2026-07-26T22:33:02.8690691Z             },
2026-07-26T22:33:02.8690792Z             {
2026-07-26T22:33:02.8690954Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8691068Z               "line": 1659
2026-07-26T22:33:02.8691174Z             },
2026-07-26T22:33:02.8691268Z             {
2026-07-26T22:33:02.8691417Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8691527Z               "line": 1690
2026-07-26T22:33:02.8691616Z             },
2026-07-26T22:33:02.8691710Z             {
2026-07-26T22:33:02.8691867Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.8691976Z               "line": 2871
2026-07-26T22:33:02.8692085Z             }
2026-07-26T22:33:02.8692186Z           ]
2026-07-26T22:33:02.8692290Z         }
2026-07-26T22:33:02.8692390Z       }
2026-07-26T22:33:02.8692491Z     },
2026-07-26T22:33:02.8692586Z     {
2026-07-26T22:33:02.8692734Z       "id": "REQ-DISPATCH-HYGIENE-TELEMETRY",
2026-07-26T22:33:02.8695790Z       "title": "REDISPATCH-STALL W1 (ADR-0038 Amendment, fixes 7+8+9): dispatcher hygiene + keyed observability — (a) bounded redispatch worker pool with batched cold enumeration, NO claim locks held during I/O (today thread::spawn per stream, unbounded on a cold table); (b) sessions-lock discipline: clone-then-drop before detach_if/info.json I/O (KH 7.12 kin — no fs/conn I/O under global locks); (c) keyed stage telemetry: gen/stream/family/endpoint/attempt/conn on every dispatch record + replay/poison/cancel/worker-outcome events + gauges + PTY high-water/RC cursor — the field-discriminator surface (poison-window census, stream-sub-attach per generation dropping to O(active streams)). Gate: impl — pool + enumeration batching + lock discipline + telemetry keys; unit — pool bound honored under a cold flood + no-lock-across-I/O seam + telemetry key completeness; doc — ADR-0038 Amendment. Kin REQ-HAZARD-REDISPATCH-STALL, KH 7.12 (locks), REQ-CONN-POISON-ATTRIBUTION (extends its attribution).",
2026-07-26T22:33:02.8696137Z       "requiredStages": [
2026-07-26T22:33:02.8696243Z         "doc",
2026-07-26T22:33:02.8696367Z         "impl",
2026-07-26T22:33:02.8696471Z         "unit"
2026-07-26T22:33:02.8696567Z       ],
2026-07-26T22:33:02.8696672Z       "stages": {
2026-07-26T22:33:02.8696770Z         "doc": {
2026-07-26T22:33:02.8696890Z           "complete": true,
2026-07-26T22:33:02.8696999Z           "evidence": [
2026-07-26T22:33:02.8697106Z             {
2026-07-26T22:33:02.8697288Z               "path": "docs/adr/0038-broker-stream-lifecycle-truth.md",
2026-07-26T22:33:02.8697402Z               "line": 77
2026-07-26T22:33:02.8697512Z             }
2026-07-26T22:33:02.8697613Z           ]
2026-07-26T22:33:02.8697721Z         },
2026-07-26T22:33:02.8697831Z         "impl": {
2026-07-26T22:33:02.8697955Z           "complete": true,
2026-07-26T22:33:02.8698055Z           "evidence": [
2026-07-26T22:33:02.8698156Z             {
2026-07-26T22:33:02.8698308Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8698417Z               "line": 4413
2026-07-26T22:33:02.8698528Z             },
2026-07-26T22:33:02.8698627Z             {
2026-07-26T22:33:02.8698785Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8699158Z               "line": 536
2026-07-26T22:33:02.8699309Z             },
2026-07-26T22:33:02.8699449Z             {
2026-07-26T22:33:02.8699671Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8699790Z               "line": 611
2026-07-26T22:33:02.8699889Z             },
2026-07-26T22:33:02.8700002Z             {
2026-07-26T22:33:02.8700146Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8700255Z               "line": 703
2026-07-26T22:33:02.8700359Z             },
2026-07-26T22:33:02.8700461Z             {
2026-07-26T22:33:02.8700602Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8700723Z               "line": 809
2026-07-26T22:33:02.8700827Z             }
2026-07-26T22:33:02.8700931Z           ]
2026-07-26T22:33:02.8701028Z         },
2026-07-26T22:33:02.8701128Z         "int": {
2026-07-26T22:33:02.8701246Z           "complete": false,
2026-07-26T22:33:02.8701367Z           "evidence": []
2026-07-26T22:33:02.8701466Z         },
2026-07-26T22:33:02.8701580Z         "unit": {
2026-07-26T22:33:02.8701686Z           "complete": true,
2026-07-26T22:33:02.8701786Z           "evidence": [
2026-07-26T22:33:02.8701890Z             {
2026-07-26T22:33:02.8702035Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8702148Z               "line": 1805
2026-07-26T22:33:02.8702265Z             },
2026-07-26T22:33:02.8702366Z             {
2026-07-26T22:33:02.8702517Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8702636Z               "line": 1838
2026-07-26T22:33:02.8702737Z             },
2026-07-26T22:33:02.8702836Z             {
2026-07-26T22:33:02.8702984Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:02.8703108Z               "line": 1862
2026-07-26T22:33:02.8703333Z             }
2026-07-26T22:33:02.8703442Z           ]
2026-07-26T22:33:02.8703541Z         }
2026-07-26T22:33:02.8703648Z       }
2026-07-26T22:33:02.8703742Z     },
2026-07-26T22:33:02.8703847Z     {
2026-07-26T22:33:02.8703977Z       "id": "REQ-DOC-DELIVERY-VOCAB",
2026-07-26T22:33:02.8705123Z       "title": "W6 (LIFECYCLE-TRUTH, docs — remaining flynn/perri gaps folded): publish the full send-outcome vocabulary (SENT / SENT(WAN) / QUEUED window semantics / DEFERRED / NO_PERCH), digest --json row schema, api poll auth + MAC-stamp prefix, remaining --json shapes checklist (seed #3). Public docs use VERSION numbers, never wave codes; docs-publish drift gate applies.",
2026-07-26T22:33:02.8705248Z       "requiredStages": [
2026-07-26T22:33:02.8705353Z         "doc"
2026-07-26T22:33:02.8705457Z       ],
2026-07-26T22:33:02.8705568Z       "stages": {
2026-07-26T22:33:02.8705834Z         "doc": {
2026-07-26T22:33:02.8706025Z           "complete": true,
2026-07-26T22:33:02.8706254Z           "evidence": [
2026-07-26T22:33:02.8706415Z             {
2026-07-26T22:33:02.8706640Z               "path": "docs-site/src/messaging/overview.md",
2026-07-26T22:33:02.8706793Z               "line": 55
2026-07-26T22:33:02.8706931Z             },
2026-07-26T22:33:02.8707064Z             {
2026-07-26T22:33:02.8707298Z               "path": "docs-site/src/reference/json-shapes.md",
2026-07-26T22:33:02.8707459Z               "line": 3
2026-07-26T22:33:02.8707605Z             }
2026-07-26T22:33:02.8707762Z           ]
2026-07-26T22:33:02.8707906Z         },
2026-07-26T22:33:02.8708062Z         "impl": {
2026-07-26T22:33:02.8708225Z           "complete": false,
2026-07-26T22:33:02.8708396Z           "evidence": []
2026-07-26T22:33:02.8708525Z         },
2026-07-26T22:33:02.8708648Z         "int": {
2026-07-26T22:33:02.8708778Z           "complete": false,
2026-07-26T22:33:02.8708907Z           "evidence": []
2026-07-26T22:33:02.8709150Z         },
2026-07-26T22:33:02.8709292Z         "unit": {
2026-07-26T22:33:02.8709403Z           "complete": false,
2026-07-26T22:33:02.8709565Z           "evidence": []
2026-07-26T22:33:02.8709660Z         }
2026-07-26T22:33:02.8709803Z       }
2026-07-26T22:33:02.8709951Z     },
2026-07-26T22:33:02.8710071Z     {
2026-07-26T22:33:02.8710221Z       "id": "REQ-DOC-ECHO-COMMUNE-CONTRACT",
2026-07-26T22:33:02.8711749Z       "title": "W6 (LIFECYCLE-TRUTH, docs — this gap cost a full outage night, priority slot): publish the [session.echo_commune] I/O contract on the docs-site: key catalog core fills; core does NOT stdin-feed [history] (field-proven); self-locate guidance incl. CLAUDE_CONFIG_DIR / read_env; drop-file protocol (single-writer, ingest-deletes, resolver semantics from W1); stdout ingestion expectations. Public docs use VERSION numbers, never wave codes; docs-publish drift gate applies.",
2026-07-26T22:33:02.8711878Z       "requiredStages": [
2026-07-26T22:33:02.8711975Z         "doc"
2026-07-26T22:33:02.8712078Z       ],
2026-07-26T22:33:02.8712184Z       "stages": {
2026-07-26T22:33:02.8712285Z         "doc": {
2026-07-26T22:33:02.8712407Z           "complete": true,
2026-07-26T22:33:02.8712522Z           "evidence": [
2026-07-26T22:33:02.8712624Z             {
2026-07-26T22:33:02.8712812Z               "path": "docs-site/src/harness-contract/echo-commune.md",
2026-07-26T22:33:02.8712912Z               "line": 20
2026-07-26T22:33:02.8713020Z             }
2026-07-26T22:33:02.8713119Z           ]
2026-07-26T22:33:02.8713224Z         },
2026-07-26T22:33:02.8713321Z         "impl": {
2026-07-26T22:33:02.8713429Z           "complete": false,
2026-07-26T22:33:02.8713530Z           "evidence": []
2026-07-26T22:33:02.8713635Z         },
2026-07-26T22:33:02.8713734Z         "int": {
2026-07-26T22:33:02.8713859Z           "complete": false,
2026-07-26T22:33:02.8713964Z           "evidence": []
2026-07-26T22:33:02.8714063Z         },
2026-07-26T22:33:02.8714174Z         "unit": {
2026-07-26T22:33:02.8714297Z           "complete": false,
2026-07-26T22:33:02.8714402Z           "evidence": []
2026-07-26T22:33:02.8714641Z         }
2026-07-26T22:33:02.8714741Z       }
2026-07-26T22:33:02.8714847Z     },
2026-07-26T22:33:02.8714946Z     {
2026-07-26T22:33:02.8715099Z       "id": "REQ-DOC-ENDPOINT-DROP-RESOLUTION",
2026-07-26T22:33:02.8716327Z       "title": "D1 (F028, perri F-c; docs/truth): SI-1's resolution rule — a RELATIVE watched drop dir resolves against the ENDPOINT's cwd, never the daemon's (KH 7.28, shipped v0.22.0) — is documented NOWHERE public. Add it to harness-contract/manifest.md + the manifest schema field descriptions so an adapter author knows a relative commune_dir/signoff_dir is endpoint-resolved. docs-drift gate applies. See triage D1.",
2026-07-26T22:33:02.8716452Z       "requiredStages": [],
2026-07-26T22:33:02.8716552Z       "stages": {
2026-07-26T22:33:02.8716656Z         "doc": {
2026-07-26T22:33:02.8716781Z           "complete": false,
2026-07-26T22:33:02.8717009Z           "evidence": []
2026-07-26T22:33:02.8717110Z         },
2026-07-26T22:33:02.8717214Z         "impl": {
2026-07-26T22:33:02.8717349Z           "complete": false,
2026-07-26T22:33:02.8717449Z           "evidence": []
2026-07-26T22:33:02.8717552Z         },
2026-07-26T22:33:02.8717658Z         "int": {
2026-07-26T22:33:02.8717768Z           "complete": false,
2026-07-26T22:33:02.8717872Z           "evidence": []
2026-07-26T22:33:02.8717976Z         },
2026-07-26T22:33:02.8718076Z         "unit": {
2026-07-26T22:33:02.8718203Z           "complete": false,
2026-07-26T22:33:02.8718303Z           "evidence": []
2026-07-26T22:33:02.8718404Z         }
2026-07-26T22:33:02.8718508Z       }
2026-07-26T22:33:02.8718613Z     },
2026-07-26T22:33:02.8718714Z     {
2026-07-26T22:33:02.8718833Z       "id": "REQ-DOCS-1",
2026-07-26T22:33:02.8719152Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-07-26T22:33:02.8719266Z       "requiredStages": [
2026-07-26T22:33:02.8719381Z         "doc",
2026-07-26T22:33:02.8719481Z         "impl"
2026-07-26T22:33:02.8719581Z       ],
2026-07-26T22:33:02.8719696Z       "stages": {
2026-07-26T22:33:02.8719800Z         "doc": {
2026-07-26T22:33:02.8719915Z           "complete": true,
2026-07-26T22:33:02.8720025Z           "evidence": [
2026-07-26T22:33:02.8720130Z             {
2026-07-26T22:33:02.8720273Z               "path": "docs-site/src/index.md",
2026-07-26T22:33:02.8720391Z               "line": 49
2026-07-26T22:33:02.8720487Z             }
2026-07-26T22:33:02.8720584Z           ]
2026-07-26T22:33:02.8720683Z         },
2026-07-26T22:33:02.8720786Z         "impl": {
2026-07-26T22:33:02.8720891Z           "complete": true,
2026-07-26T22:33:02.8720995Z           "evidence": [
2026-07-26T22:33:02.8721103Z             {
2026-07-26T22:33:02.8721242Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:02.8721352Z               "line": 13
2026-07-26T22:33:02.8721456Z             }
2026-07-26T22:33:02.8721562Z           ]
2026-07-26T22:33:02.8721662Z         },
2026-07-26T22:33:02.8721761Z         "int": {
2026-07-26T22:33:02.8721881Z           "complete": false,
2026-07-26T22:33:02.8722001Z           "evidence": []
2026-07-26T22:33:02.8722104Z         },
2026-07-26T22:33:02.8722215Z         "unit": {
2026-07-26T22:33:02.8722329Z           "complete": false,
2026-07-26T22:33:02.8722448Z           "evidence": []
2026-07-26T22:33:02.8722549Z         }
2026-07-26T22:33:02.8722643Z       }
2026-07-26T22:33:02.8722744Z     },
2026-07-26T22:33:02.8722845Z     {
2026-07-26T22:33:02.8722958Z       "id": "REQ-DOCS-2",
2026-07-26T22:33:02.8723150Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-07-26T22:33:02.8723268Z       "requiredStages": [
2026-07-26T22:33:02.8723381Z         "doc",
2026-07-26T22:33:02.8723486Z         "int"
2026-07-26T22:33:02.8723590Z       ],
2026-07-26T22:33:02.8723689Z       "stages": {
2026-07-26T22:33:02.8723794Z         "doc": {
2026-07-26T22:33:02.8723914Z           "complete": true,
2026-07-26T22:33:02.8724037Z           "evidence": [
2026-07-26T22:33:02.8724134Z             {
2026-07-26T22:33:02.8724356Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-07-26T22:33:02.8724581Z               "line": 3
2026-07-26T22:33:02.8724695Z             },
2026-07-26T22:33:02.8724796Z             {
2026-07-26T22:33:02.8724957Z               "path": "docs-site/src/quickstart/adapter.md",
2026-07-26T22:33:02.8725063Z               "line": 3
2026-07-26T22:33:02.8725167Z             },
2026-07-26T22:33:02.8725262Z             {
2026-07-26T22:33:02.8725426Z               "path": "docs-site/src/quickstart/messaging.md",
2026-07-26T22:33:02.8725524Z               "line": 3
2026-07-26T22:33:02.8725630Z             }
2026-07-26T22:33:02.8725727Z           ]
2026-07-26T22:33:02.8725829Z         },
2026-07-26T22:33:02.8725940Z         "impl": {
2026-07-26T22:33:02.8726046Z           "complete": false,
2026-07-26T22:33:02.8726163Z           "evidence": []
2026-07-26T22:33:02.8726368Z         },
2026-07-26T22:33:02.8726487Z         "int": {
2026-07-26T22:33:02.8726601Z           "complete": true,
2026-07-26T22:33:02.8726717Z           "evidence": [
2026-07-26T22:33:02.8726826Z             {
2026-07-26T22:33:02.8726974Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-07-26T22:33:02.8727093Z               "line": 14
2026-07-26T22:33:02.8727197Z             }
2026-07-26T22:33:02.8727298Z           ]
2026-07-26T22:33:02.8727403Z         },
2026-07-26T22:33:02.8727517Z         "unit": {
2026-07-26T22:33:02.8727642Z           "complete": false,
2026-07-26T22:33:02.8727751Z           "evidence": []
2026-07-26T22:33:02.8727860Z         }
2026-07-26T22:33:02.8727952Z       }
2026-07-26T22:33:02.8728056Z     },
2026-07-26T22:33:02.8728151Z     {
2026-07-26T22:33:02.8728272Z       "id": "REQ-DOCS-3",
2026-07-26T22:33:02.8728508Z       "title": "Diátaxis structure; one canonical way to do X",
2026-07-26T22:33:02.8728627Z       "requiredStages": [
2026-07-26T22:33:02.8728735Z         "doc"
2026-07-26T22:33:02.8728834Z       ],
2026-07-26T22:33:02.8728940Z       "stages": {
2026-07-26T22:33:02.8729120Z         "doc": {
2026-07-26T22:33:02.8729250Z           "complete": true,
2026-07-26T22:33:02.8729369Z           "evidence": [
2026-07-26T22:33:02.8729463Z             {
2026-07-26T22:33:02.8729608Z               "path": "docs-site/src/index.md",
2026-07-26T22:33:02.8729712Z               "line": 41
2026-07-26T22:33:02.8729817Z             }
2026-07-26T22:33:02.8729918Z           ]
2026-07-26T22:33:02.8730022Z         },
2026-07-26T22:33:02.8730127Z         "impl": {
2026-07-26T22:33:02.8730247Z           "complete": false,
2026-07-26T22:33:02.8730360Z           "evidence": []
2026-07-26T22:33:02.8730470Z         },
2026-07-26T22:33:02.8730571Z         "int": {
2026-07-26T22:33:02.8730680Z           "complete": false,
2026-07-26T22:33:02.8730790Z           "evidence": []
2026-07-26T22:33:02.8730895Z         },
2026-07-26T22:33:02.8730989Z         "unit": {
2026-07-26T22:33:02.8731119Z           "complete": false,
2026-07-26T22:33:02.8731229Z           "evidence": []
2026-07-26T22:33:02.8731337Z         }
2026-07-26T22:33:02.8731442Z       }
2026-07-26T22:33:02.8731541Z     },
2026-07-26T22:33:02.8731640Z     {
2026-07-26T22:33:02.8731759Z       "id": "REQ-DOCS-4",
2026-07-26T22:33:02.8732025Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-07-26T22:33:02.8732141Z       "requiredStages": [
2026-07-26T22:33:02.8732246Z         "doc",
2026-07-26T22:33:02.8732350Z         "impl",
2026-07-26T22:33:02.8732451Z         "unit"
2026-07-26T22:33:02.8732561Z       ],
2026-07-26T22:33:02.8732659Z       "stages": {
2026-07-26T22:33:02.8732766Z         "doc": {
2026-07-26T22:33:02.8732884Z           "complete": true,
2026-07-26T22:33:02.8733004Z           "evidence": [
2026-07-26T22:33:02.8733105Z             {
2026-07-26T22:33:02.8733237Z               "path": "docs/DOCS-STRATEGY.md",
2026-07-26T22:33:02.8733347Z               "line": 35
2026-07-26T22:33:02.8733458Z             }
2026-07-26T22:33:02.8733556Z           ]
2026-07-26T22:33:02.8733662Z         },
2026-07-26T22:33:02.8733767Z         "impl": {
2026-07-26T22:33:02.8733989Z           "complete": true,
2026-07-26T22:33:02.8734104Z           "evidence": [
2026-07-26T22:33:02.8734211Z             {
2026-07-26T22:33:02.8734364Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.8734488Z               "line": 906
2026-07-26T22:33:02.8734588Z             },
2026-07-26T22:33:02.8734689Z             {
2026-07-26T22:33:02.8734836Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:02.8734950Z               "line": 14
2026-07-26T22:33:02.8735051Z             }
2026-07-26T22:33:02.8735151Z           ]
2026-07-26T22:33:02.8735255Z         },
2026-07-26T22:33:02.8735361Z         "int": {
2026-07-26T22:33:02.8735484Z           "complete": false,
2026-07-26T22:33:02.8735594Z           "evidence": []
2026-07-26T22:33:02.8735700Z         },
2026-07-26T22:33:02.8735904Z         "unit": {
2026-07-26T22:33:02.8736024Z           "complete": true,
2026-07-26T22:33:02.8736128Z           "evidence": [
2026-07-26T22:33:02.8736244Z             {
2026-07-26T22:33:02.8736390Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.8736515Z               "line": 2114
2026-07-26T22:33:02.8736621Z             }
2026-07-26T22:33:02.8736719Z           ]
2026-07-26T22:33:02.8736818Z         }
2026-07-26T22:33:02.8736924Z       }
2026-07-26T22:33:02.8737024Z     },
2026-07-26T22:33:02.8737128Z     {
2026-07-26T22:33:02.8737243Z       "id": "REQ-DOCS-5",
2026-07-26T22:33:02.8737471Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-07-26T22:33:02.8737592Z       "requiredStages": [
2026-07-26T22:33:02.8737705Z         "impl",
2026-07-26T22:33:02.8737810Z         "int"
2026-07-26T22:33:02.8741451Z       ],
2026-07-26T22:33:02.8741588Z       "stages": {
2026-07-26T22:33:02.8741704Z         "doc": {
2026-07-26T22:33:02.8741826Z           "complete": false,
2026-07-26T22:33:02.8741939Z           "evidence": []
2026-07-26T22:33:02.8742045Z         },
2026-07-26T22:33:02.8742162Z         "impl": {
2026-07-26T22:33:02.8742266Z           "complete": true,
2026-07-26T22:33:02.8742381Z           "evidence": [
2026-07-26T22:33:02.8742486Z             {
2026-07-26T22:33:02.8742653Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.8742754Z               "line": 907
2026-07-26T22:33:02.8742863Z             },
2026-07-26T22:33:02.8742963Z             {
2026-07-26T22:33:02.8743106Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:02.8743215Z               "line": 118
2026-07-26T22:33:02.8743312Z             }
2026-07-26T22:33:02.8743411Z           ]
2026-07-26T22:33:02.8743516Z         },
2026-07-26T22:33:02.8743612Z         "int": {
2026-07-26T22:33:02.8743735Z           "complete": true,
2026-07-26T22:33:02.8743835Z           "evidence": [
2026-07-26T22:33:02.8743937Z             {
2026-07-26T22:33:02.8744078Z               "path": ".github/workflows/ci.yml",
2026-07-26T22:33:02.8744193Z               "line": 284
2026-07-26T22:33:02.8744299Z             },
2026-07-26T22:33:02.8744398Z             {
2026-07-26T22:33:02.8744549Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.8744659Z               "line": 2149
2026-07-26T22:33:02.8744766Z             }
2026-07-26T22:33:02.8744861Z           ]
2026-07-26T22:33:02.8744963Z         },
2026-07-26T22:33:02.8745067Z         "unit": {
2026-07-26T22:33:02.8745191Z           "complete": false,
2026-07-26T22:33:02.8745292Z           "evidence": []
2026-07-26T22:33:02.8745396Z         }
2026-07-26T22:33:02.8745496Z       }
2026-07-26T22:33:02.8745597Z     },
2026-07-26T22:33:02.8745697Z     {
2026-07-26T22:33:02.8745815Z       "id": "REQ-DOCS-6",
2026-07-26T22:33:02.8746179Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-07-26T22:33:02.8746306Z       "requiredStages": [
2026-07-26T22:33:02.8746402Z         "impl",
2026-07-26T22:33:02.8746503Z         "unit",
2026-07-26T22:33:02.8746741Z         "int"
2026-07-26T22:33:02.8746837Z       ],
2026-07-26T22:33:02.8746945Z       "stages": {
2026-07-26T22:33:02.8747050Z         "doc": {
2026-07-26T22:33:02.8747161Z           "complete": true,
2026-07-26T22:33:02.8747279Z           "evidence": [
2026-07-26T22:33:02.8747374Z             {
2026-07-26T22:33:02.8747541Z               "path": "docs-site/src/quickstart/messaging.md",
2026-07-26T22:33:02.8747645Z               "line": 4
2026-07-26T22:33:02.8747750Z             }
2026-07-26T22:33:02.8747861Z           ]
2026-07-26T22:33:02.8748017Z         },
2026-07-26T22:33:02.8748143Z         "impl": {
2026-07-26T22:33:02.8748252Z           "complete": true,
2026-07-26T22:33:02.8748360Z           "evidence": [
2026-07-26T22:33:02.8748462Z             {
2026-07-26T22:33:02.8748637Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8748905Z               "line": 9907
2026-07-26T22:33:02.8749204Z             }
2026-07-26T22:33:02.8749300Z           ]
2026-07-26T22:33:02.8749402Z         },
2026-07-26T22:33:02.8749504Z         "int": {
2026-07-26T22:33:02.8749609Z           "complete": true,
2026-07-26T22:33:02.8749728Z           "evidence": [
2026-07-26T22:33:02.8749822Z             {
2026-07-26T22:33:02.8749983Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-07-26T22:33:02.8750079Z               "line": 39
2026-07-26T22:33:02.8750184Z             }
2026-07-26T22:33:02.8750283Z           ]
2026-07-26T22:33:02.8750380Z         },
2026-07-26T22:33:02.8750479Z         "unit": {
2026-07-26T22:33:02.8750602Z           "complete": true,
2026-07-26T22:33:02.8750704Z           "evidence": [
2026-07-26T22:33:02.8750808Z             {
2026-07-26T22:33:02.8750932Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8751095Z               "line": 19314
2026-07-26T22:33:02.8751242Z             }
2026-07-26T22:33:02.8751399Z           ]
2026-07-26T22:33:02.8751547Z         }
2026-07-26T22:33:02.8751710Z       }
2026-07-26T22:33:02.8751901Z     },
2026-07-26T22:33:02.8752081Z     {
2026-07-26T22:33:02.8752216Z       "id": "REQ-DOCS-LOCAL-SERVER",
2026-07-26T22:33:02.8756332Z       "title": "THE-FORKENING W3 (ADR-0036 §4, operator-ruled crate-over-handroll + port 5474): the daemon (broker side — docs are up whenever the daemon is) serves $SPT_HOME/docs over HTTP on LOOPBACK ONLY, default 127.0.0.1:5474 (+ ::1 where available; 547 rejected — privileged <1024 breaks the Linux user-daemon + IANA dhcpv6-server), config + env override. Implementation = hyper (ALREADY in-tree via iroh/reqwest — zero new supply chain; operator ruled battle-tested crate over hand-rolled HTTP). GET-only; strict path-sanitize under $SPT_HOME/docs (reject .., absolute, encoded traversal); bounded write discipline (conn-hazard class). Published URL surface preserved VERBATIM (llms.txt contract: /llms-full.txt, append-.md raw, /manifest.schema.json — flynn/perri doc habits must not break). Verbs: `spt docs url` prints the resolved URL honoring overrides; bare `spt docs` opens the system browser (cfg(windows) creation_flags no-console). NEVER 0.0.0.0 — a LAN-visible server re-leaks what privating hid. Gate: unit — path-sanitize rejections + content-type map + loopback-only bind config; int — daemon up serves book index + llms-full.txt + a raw .md byte-true from a landed bundle; doc — CONTEXT.md Docs Server entry + docs-site self-reference updated (site-url). Kin REQ-DOCS-RELEASE-ASSET (the producer), ADR-0036, translation-binary console-window gotcha.",
2026-07-26T22:33:02.8756524Z       "requiredStages": [
2026-07-26T22:33:02.8756628Z         "doc",
2026-07-26T22:33:02.8756734Z         "impl",
2026-07-26T22:33:02.8756834Z         "unit",
2026-07-26T22:33:02.8756934Z         "int"
2026-07-26T22:33:02.8757034Z       ],
2026-07-26T22:33:02.8757144Z       "stages": {
2026-07-26T22:33:02.8757249Z         "doc": {
2026-07-26T22:33:02.8757369Z           "complete": true,
2026-07-26T22:33:02.8757492Z           "evidence": [
2026-07-26T22:33:02.8757596Z             {
2026-07-26T22:33:02.8757712Z               "path": "CONTEXT.md",
2026-07-26T22:33:02.8757981Z               "line": 595
2026-07-26T22:33:02.8758087Z             }
2026-07-26T22:33:02.8758177Z           ]
2026-07-26T22:33:02.8758267Z         },
2026-07-26T22:33:02.8758363Z         "impl": {
2026-07-26T22:33:02.8758479Z           "complete": true,
2026-07-26T22:33:02.8758592Z           "evidence": [
2026-07-26T22:33:02.8758693Z             {
2026-07-26T22:33:02.8758854Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8759050Z               "line": 228
2026-07-26T22:33:02.8759145Z             },
2026-07-26T22:33:02.8759250Z             {
2026-07-26T22:33:02.8759416Z               "path": "crates/spt-daemon/src/docshost.rs",
2026-07-26T22:33:02.8759526Z               "line": 37
2026-07-26T22:33:02.8759628Z             },
2026-07-26T22:33:02.8759731Z             {
2026-07-26T22:33:02.8759991Z               "path": "crates/spt-daemon/src/docshost.rs",
2026-07-26T22:33:02.8760098Z               "line": 51
2026-07-26T22:33:02.8760193Z             },
2026-07-26T22:33:02.8760303Z             {
2026-07-26T22:33:02.8760448Z               "path": "crates/spt-daemon/src/docshost.rs",
2026-07-26T22:33:02.8760553Z               "line": 81
2026-07-26T22:33:02.8760654Z             },
2026-07-26T22:33:02.8760758Z             {
2026-07-26T22:33:02.8760901Z               "path": "crates/spt-daemon/src/docshost.rs",
2026-07-26T22:33:02.8761016Z               "line": 110
2026-07-26T22:33:02.8761120Z             },
2026-07-26T22:33:02.8761221Z             {
2026-07-26T22:33:02.8761369Z               "path": "crates/spt-daemon/src/docshost.rs",
2026-07-26T22:33:02.8761468Z               "line": 148
2026-07-26T22:33:02.8761570Z             },
2026-07-26T22:33:02.8761674Z             {
2026-07-26T22:33:02.8761816Z               "path": "crates/spt-daemon/src/docshost.rs",
2026-07-26T22:33:02.8761931Z               "line": 251
2026-07-26T22:33:02.8762036Z             },
2026-07-26T22:33:02.8762141Z             {
2026-07-26T22:33:02.8762265Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8762398Z               "line": 1481
2026-07-26T22:33:02.8762495Z             },
2026-07-26T22:33:02.8762603Z             {
2026-07-26T22:33:02.8762732Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8762848Z               "line": 5883
2026-07-26T22:33:02.8762951Z             }
2026-07-26T22:33:02.8763050Z           ]
2026-07-26T22:33:02.8763156Z         },
2026-07-26T22:33:02.8763259Z         "int": {
2026-07-26T22:33:02.8763372Z           "complete": true,
2026-07-26T22:33:02.8763535Z           "evidence": [
2026-07-26T22:33:02.8763630Z             {
2026-07-26T22:33:02.8763798Z               "path": "crates/spt-daemon/tests/docs_server_e2e.rs",
2026-07-26T22:33:02.8763902Z               "line": 12
2026-07-26T22:33:02.8764007Z             }
2026-07-26T22:33:02.8764103Z           ]
2026-07-26T22:33:02.8764217Z         },
2026-07-26T22:33:02.8764316Z         "unit": {
2026-07-26T22:33:02.8764427Z           "complete": true,
2026-07-26T22:33:02.8764541Z           "evidence": [
2026-07-26T22:33:02.8764641Z             {
2026-07-26T22:33:02.8764789Z               "path": "crates/spt-daemon/src/docshost.rs",
2026-07-26T22:33:02.8764907Z               "line": 293
2026-07-26T22:33:02.8765008Z             }
2026-07-26T22:33:02.8765109Z           ]
2026-07-26T22:33:02.8765213Z         }
2026-07-26T22:33:02.8765323Z       }
2026-07-26T22:33:02.8765424Z     },
2026-07-26T22:33:02.8765527Z     {
2026-07-26T22:33:02.8765660Z       "id": "REQ-DOCS-NO-INTERNAL-CODES",
2026-07-26T22:33:02.8767366Z       "title": "Public CLI --help (the clap `///` doc-comments) and the generated `docs-site/src/cli/reference.md` MUST NOT contain internal tracker/decision codes — `REQ-*`, `F-###`, `M#-W#`, `ADR-####`. They are meaningless to an end user reading --help and ship to GH-Pages. A CI-gated scan (the `xtask check` docs gate) fails on any such token in the GENERATED reference.md (which by construction contains only clap help, so rustdoc `///` on fns/structs is OUT of scope and keeps its REQ/ADR cross-refs). Substance is kept; codes are rewritten to plain language. (v0.13.2 W6)",
2026-07-26T22:33:02.8767619Z       "requiredStages": [
2026-07-26T22:33:02.8767727Z         "doc",
2026-07-26T22:33:02.8767832Z         "impl",
2026-07-26T22:33:02.8767939Z         "unit"
2026-07-26T22:33:02.8768047Z       ],
2026-07-26T22:33:02.8768157Z       "stages": {
2026-07-26T22:33:02.8768268Z         "doc": {
2026-07-26T22:33:02.8768381Z           "complete": true,
2026-07-26T22:33:02.8768484Z           "evidence": [
2026-07-26T22:33:02.8768580Z             {
2026-07-26T22:33:02.8768719Z               "path": "docs/DOCS-STRATEGY.md",
2026-07-26T22:33:02.8768818Z               "line": 59
2026-07-26T22:33:02.8768923Z             }
2026-07-26T22:33:02.8769099Z           ]
2026-07-26T22:33:02.8769195Z         },
2026-07-26T22:33:02.8769296Z         "impl": {
2026-07-26T22:33:02.8769657Z           "complete": true,
2026-07-26T22:33:02.8769752Z           "evidence": [
2026-07-26T22:33:02.8769859Z             {
2026-07-26T22:33:02.8770005Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:02.8770115Z               "line": 227
2026-07-26T22:33:02.8770212Z             },
2026-07-26T22:33:02.8770320Z             {
2026-07-26T22:33:02.8770459Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:02.8770560Z               "line": 281
2026-07-26T22:33:02.8770653Z             }
2026-07-26T22:33:02.8770743Z           ]
2026-07-26T22:33:02.8770844Z         },
2026-07-26T22:33:02.8770943Z         "int": {
2026-07-26T22:33:02.8771061Z           "complete": false,
2026-07-26T22:33:02.8771175Z           "evidence": []
2026-07-26T22:33:02.8771271Z         },
2026-07-26T22:33:02.8771380Z         "unit": {
2026-07-26T22:33:02.8771490Z           "complete": true,
2026-07-26T22:33:02.8771605Z           "evidence": [
2026-07-26T22:33:02.8771709Z             {
2026-07-26T22:33:02.8771848Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:02.8771952Z               "line": 1721
2026-07-26T22:33:02.8772052Z             },
2026-07-26T22:33:02.8772154Z             {
2026-07-26T22:33:02.8772291Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:02.8772396Z               "line": 1742
2026-07-26T22:33:02.8772506Z             }
2026-07-26T22:33:02.8772601Z           ]
2026-07-26T22:33:02.8772701Z         }
2026-07-26T22:33:02.8772802Z       }
2026-07-26T22:33:02.8772911Z     },
2026-07-26T22:33:02.8773006Z     {
2026-07-26T22:33:02.8773136Z       "id": "REQ-DOCS-RELEASE-ASSET",
2026-07-26T22:33:02.8775758Z       "title": "THE-FORKENING W2 (ADR-0036 §4): every release ships a platform-independent docs bundle `spt-docs.tar.gz` (BUILT mdbook output: HTML + llms.txt + llms-full.txt + raw .md + manifest.schema.json) as a release asset WITH an entry in the SIGNED update-set (sha256, same integrity chain as binaries — docs describe the security-relevant contract surface, they do not ride unverified). Apply lands/refreshes $SPT_HOME/docs (single current copy = docs always match the installed binary). FAILURE ISOLATION binding: a docs-asset failure NEVER fails the binary update — UPDATE_DOCS_SKIPPED loud, retried next fetch. Gate: unit — update-set entry + sha256 verify + skip-loud isolation; int — a fetch+apply lands version-matched docs at $SPT_HOME/docs; doc — self-update docs name the bundle. Kin REQ-DOCS-LOCAL-SERVER (the consumer), REQ-RELEASE-CHANNEL-PRIVATE (the assemble leg), ADR-0036.",
2026-07-26T22:33:02.8775932Z       "requiredStages": [
2026-07-26T22:33:02.8776036Z         "doc",
2026-07-26T22:33:02.8776144Z         "impl",
2026-07-26T22:33:02.8776244Z         "unit",
2026-07-26T22:33:02.8776344Z         "int"
2026-07-26T22:33:02.8776452Z       ],
2026-07-26T22:33:02.8776556Z       "stages": {
2026-07-26T22:33:02.8776658Z         "doc": {
2026-07-26T22:33:02.8776776Z           "complete": true,
2026-07-26T22:33:02.8776900Z           "evidence": [
2026-07-26T22:33:02.8777001Z             {
2026-07-26T22:33:02.8777133Z               "path": "CONTEXT.md",
2026-07-26T22:33:02.8777367Z               "line": 593
2026-07-26T22:33:02.8777471Z             }
2026-07-26T22:33:02.8777578Z           ]
2026-07-26T22:33:02.8777682Z         },
2026-07-26T22:33:02.8777791Z         "impl": {
2026-07-26T22:33:02.8777907Z           "complete": true,
2026-07-26T22:33:02.8778011Z           "evidence": [
2026-07-26T22:33:02.8778106Z             {
2026-07-26T22:33:02.8778259Z               "path": ".github/workflows/release.yml",
2026-07-26T22:33:02.8778364Z               "line": 137
2026-07-26T22:33:02.8778469Z             },
2026-07-26T22:33:02.8778570Z             {
2026-07-26T22:33:02.8778731Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:02.8778842Z               "line": 54
2026-07-26T22:33:02.8779011Z             },
2026-07-26T22:33:02.8779116Z             {
2026-07-26T22:33:02.8779270Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:02.8779488Z               "line": 286
2026-07-26T22:33:02.8779589Z             },
2026-07-26T22:33:02.8779692Z             {
2026-07-26T22:33:02.8779847Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:02.8779956Z               "line": 296
2026-07-26T22:33:02.8780051Z             },
2026-07-26T22:33:02.8780166Z             {
2026-07-26T22:33:02.8780313Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:02.8780428Z               "line": 304
2026-07-26T22:33:02.8780560Z             },
2026-07-26T22:33:02.8780704Z             {
2026-07-26T22:33:02.8780947Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:02.8781153Z               "line": 311
2026-07-26T22:33:02.8781366Z             },
2026-07-26T22:33:02.8781475Z             {
2026-07-26T22:33:02.8781697Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:02.8781808Z               "line": 161
2026-07-26T22:33:02.8781926Z             },
2026-07-26T22:33:02.8782026Z             {
2026-07-26T22:33:02.8782179Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:02.8782288Z               "line": 169
2026-07-26T22:33:02.8782385Z             },
2026-07-26T22:33:02.8782489Z             {
2026-07-26T22:33:02.8782642Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:02.8782747Z               "line": 661
2026-07-26T22:33:02.8782851Z             },
2026-07-26T22:33:02.8782951Z             {
2026-07-26T22:33:02.8783108Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:02.8783213Z               "line": 915
2026-07-26T22:33:02.8783319Z             },
2026-07-26T22:33:02.8783423Z             {
2026-07-26T22:33:02.8783557Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8783672Z               "line": 5408
2026-07-26T22:33:02.8783775Z             },
2026-07-26T22:33:02.8783872Z             {
2026-07-26T22:33:02.8783997Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8784118Z               "line": 5519
2026-07-26T22:33:02.8784218Z             },
2026-07-26T22:33:02.8784319Z             {
2026-07-26T22:33:02.8784450Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8784560Z               "line": 6731
2026-07-26T22:33:02.8784655Z             },
2026-07-26T22:33:02.8784760Z             {
2026-07-26T22:33:02.8784893Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:02.8785013Z               "line": 569
2026-07-26T22:33:02.8785112Z             },
2026-07-26T22:33:02.8785218Z             {
2026-07-26T22:33:02.8785347Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:02.8785465Z               "line": 829
2026-07-26T22:33:02.8785562Z             },
2026-07-26T22:33:02.8785661Z             {
2026-07-26T22:33:02.8785785Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:02.8785901Z               "line": 994
2026-07-26T22:33:02.8785995Z             }
2026-07-26T22:33:02.8786100Z           ]
2026-07-26T22:33:02.8786196Z         },
2026-07-26T22:33:02.8786295Z         "int": {
2026-07-26T22:33:02.8786405Z           "complete": true,
2026-07-26T22:33:02.8786667Z           "evidence": [
2026-07-26T22:33:02.8786770Z             {
2026-07-26T22:33:02.8786922Z               "path": "crates/spt/tests/docs_bundle_e2e.rs",
2026-07-26T22:33:02.8787026Z               "line": 13
2026-07-26T22:33:02.8787121Z             }
2026-07-26T22:33:02.8787218Z           ]
2026-07-26T22:33:02.8787345Z         },
2026-07-26T22:33:02.8787446Z         "unit": {
2026-07-26T22:33:02.8787580Z           "complete": true,
2026-07-26T22:33:02.8787689Z           "evidence": [
2026-07-26T22:33:02.8787814Z             {
2026-07-26T22:33:02.8787965Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:02.8788080Z               "line": 527
2026-07-26T22:33:02.8788185Z             },
2026-07-26T22:33:02.8788294Z             {
2026-07-26T22:33:02.8788462Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:02.8788715Z               "line": 904
2026-07-26T22:33:02.8788829Z             }
2026-07-26T22:33:02.8788929Z           ]
2026-07-26T22:33:02.8789134Z         }
2026-07-26T22:33:02.8789238Z       }
2026-07-26T22:33:02.8789345Z     },
2026-07-26T22:33:02.8789445Z     {
2026-07-26T22:33:02.8789600Z       "id": "REQ-DRIVEN-BY-OWN-NODE-NORMALIZE",
2026-07-26T22:33:02.8797374Z       "title": "RC-RENDER-TRUTH v0.38.1 fast-follow leg 1 — RESHAPED by operator/hertz correction + CONTEXT.md:382-389 grounding (doyle ruling v3, 2026-07-19; the original own-node NORMALIZATION is WITHDRAWN): plain `spt rc` on a CONTROLLED endpoint is refused-with-guidance BY DESIGN (CONTEXT:386 — never silent-displace; --take is the opt-in kick), and `driven_by` = the CONTROLLING NODE including the own node (CONTEXT:386 single-writer datum — the stamp comment's remote-only claim was a legacy-path artifact, NOT the model). v0.38.0 shipped behavior is CORRECT: the own-hex latch + client guidance blocking a second same-node plain rc IS the documented refusal, and the W2 generation ladder stays reachable exactly where it belongs — the recovery seams (rc reconnect re-drive + dispatcher re-serve bypass the client gate; the hertz field FAIL leg is reclassified NOT-A-DEFECT). Remaining work = truth/cosmetics across ALL own-node display surfaces (doyle gate finding 2026-07-19 — the own-hex latch is truthful but only rc.rs first learned to HUMANIZE it; the picker pin + endpoint-info attached_node still read the own-hex stamp as a foreign remote driver and print raw hex): (a) rc.rs guidance copy names the actual state — controlled from another window on this machine — via a pure driver_phrase keyed on the SHARED own-node predicate (roster::is_own_node_hex); (b) picker control_line (view.rs) reads an own-node driver as controlled locally (driven_by_is_self computed at data-build where the raw hex is available, driven_by STAYS populated so View+Kick is still offered); (c) endpoint-info attached_node (reporting.rs derive_attached_node) self-attributes an own-node driver to THIS node, never a foreign null-label hex; (d) stamp_driven_by + set_driven_by/set_controlled comments rewritten to the CONTEXT:386 meaning (controller node, own included) + KH 7.15/secondary remote-only model-claim comments reconciled (selfheal/unlatch semantics unchanged); (e) plain-Control-on-controlled refusal + --view/--take bypass pinned for BOTH remote and own-node drivers. NO broker behavior change; ladder untouched; pure display (no int, same as the ruling-v3 dropped int). Gate: impl — rc/picker/endpoint-info humanization + shared predicate + comment/docs; unit — own-node latch stamps truthfully (broker), guidance fires for own+remote with the right copy (rc), driver_phrase names own-node plainly (rc), control_line reads own-node as controlled locally (view), attached_node self-attributes own-node (reporting), --view/--take bypass; doc — KH 7.15 + ADR-0044 consequence-note alignment.",
2026-07-26T22:33:02.8797619Z       "requiredStages": [
2026-07-26T22:33:02.8797734Z         "doc",
2026-07-26T22:33:02.8797839Z         "impl",
2026-07-26T22:33:02.8797948Z         "unit"
2026-07-26T22:33:02.8798178Z       ],
2026-07-26T22:33:02.8798282Z       "stages": {
2026-07-26T22:33:02.8798393Z         "doc": {
2026-07-26T22:33:02.8798507Z           "complete": true,
2026-07-26T22:33:02.8798626Z           "evidence": [
2026-07-26T22:33:02.8798717Z             {
2026-07-26T22:33:02.8798883Z               "path": "docs/adr/0044-controller-lease-truth.md",
2026-07-26T22:33:02.8799079Z               "line": 109
2026-07-26T22:33:02.8799183Z             }
2026-07-26T22:33:02.8799294Z           ]
2026-07-26T22:33:02.8799393Z         },
2026-07-26T22:33:02.8799498Z         "impl": {
2026-07-26T22:33:02.8799623Z           "complete": true,
2026-07-26T22:33:02.8799722Z           "evidence": [
2026-07-26T22:33:02.8799827Z             {
2026-07-26T22:33:02.8799972Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.8800079Z               "line": 916
2026-07-26T22:33:02.8800285Z             },
2026-07-26T22:33:02.8800385Z             {
2026-07-26T22:33:02.8800527Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:02.8800647Z               "line": 218
2026-07-26T22:33:02.8800747Z             },
2026-07-26T22:33:02.8800841Z             {
2026-07-26T22:33:02.8800985Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:02.8801104Z               "line": 278
2026-07-26T22:33:02.8801199Z             },
2026-07-26T22:33:02.8801305Z             {
2026-07-26T22:33:02.8801452Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:02.8801568Z               "line": 522
2026-07-26T22:33:02.8801667Z             },
2026-07-26T22:33:02.8801776Z             {
2026-07-26T22:33:02.8801916Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:02.8802029Z               "line": 552
2026-07-26T22:33:02.8802134Z             },
2026-07-26T22:33:02.8802235Z             {
2026-07-26T22:33:02.8802376Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:02.8802486Z               "line": 1174
2026-07-26T22:33:02.8802586Z             },
2026-07-26T22:33:02.8802689Z             {
2026-07-26T22:33:02.8802832Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:02.8802933Z               "line": 22
2026-07-26T22:33:02.8803036Z             },
2026-07-26T22:33:02.8803142Z             {
2026-07-26T22:33:02.8803276Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:02.8803379Z               "line": 29
2026-07-26T22:33:02.8803481Z             }
2026-07-26T22:33:02.8803580Z           ]
2026-07-26T22:33:02.8803684Z         },
2026-07-26T22:33:02.8803786Z         "int": {
2026-07-26T22:33:02.8803900Z           "complete": false,
2026-07-26T22:33:02.8804013Z           "evidence": []
2026-07-26T22:33:02.8804120Z         },
2026-07-26T22:33:02.8804224Z         "unit": {
2026-07-26T22:33:02.8804348Z           "complete": true,
2026-07-26T22:33:02.8804454Z           "evidence": [
2026-07-26T22:33:02.8804562Z             {
2026-07-26T22:33:02.8804706Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8804830Z               "line": 8622
2026-07-26T22:33:02.8804935Z             },
2026-07-26T22:33:02.8805031Z             {
2026-07-26T22:33:02.8805178Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.8805300Z               "line": 1090
2026-07-26T22:33:02.8805400Z             },
2026-07-26T22:33:02.8805509Z             {
2026-07-26T22:33:02.8805646Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:02.8805771Z               "line": 791
2026-07-26T22:33:02.8805875Z             },
2026-07-26T22:33:02.8805975Z             {
2026-07-26T22:33:02.8806095Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:02.8806218Z               "line": 2494
2026-07-26T22:33:02.8806314Z             },
2026-07-26T22:33:02.8806424Z             {
2026-07-26T22:33:02.8806542Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:02.8806663Z               "line": 2518
2026-07-26T22:33:02.8806767Z             }
2026-07-26T22:33:02.8806876Z           ]
2026-07-26T22:33:02.8807082Z         }
2026-07-26T22:33:02.8807186Z       }
2026-07-26T22:33:02.8807288Z     },
2026-07-26T22:33:02.8807397Z     {
2026-07-26T22:33:02.8807520Z       "id": "REQ-DSR-SINGLE-CPR",
2026-07-26T22:33:02.8809348Z       "title": "TEARDOWN-AUTHORITY W3 rider (hertz RCA 2026-07-19): a Device Status Report query yields EXACTLY ONE Cursor Position Report. Rides W3 because it is the same emulator-conformance surface as the width work and the same field capture surfaced it; kept a separate REQ so its evidence is not buried inside the width tags. Gate: impl — one CPR per DSR on the emulator reply path; unit — a DSR in the input stream produces a single well-formed CPR carrying the DISPLAY-column cursor position (i.e. consistent with REQ-SCREENGRID-WIDTH reckoning, not the raw char count).",
2026-07-26T22:33:02.8809515Z       "requiredStages": [
2026-07-26T22:33:02.8809725Z         "impl",
2026-07-26T22:33:02.8809830Z         "unit"
2026-07-26T22:33:02.8809926Z       ],
2026-07-26T22:33:02.8810035Z       "stages": {
2026-07-26T22:33:02.8810155Z         "doc": {
2026-07-26T22:33:02.8810278Z           "complete": false,
2026-07-26T22:33:02.8810383Z           "evidence": []
2026-07-26T22:33:02.8810493Z         },
2026-07-26T22:33:02.8810597Z         "impl": {
2026-07-26T22:33:02.8810715Z           "complete": true,
2026-07-26T22:33:02.8810815Z           "evidence": [
2026-07-26T22:33:02.8810936Z             {
2026-07-26T22:33:02.8811092Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8811207Z               "line": 1191
2026-07-26T22:33:02.8811311Z             },
2026-07-26T22:33:02.8811416Z             {
2026-07-26T22:33:02.8811555Z               "path": "crates/spt-term/src/reader.rs",
2026-07-26T22:33:02.8811669Z               "line": 61
2026-07-26T22:33:02.8811769Z             },
2026-07-26T22:33:02.8811874Z             {
2026-07-26T22:33:02.8812017Z               "path": "crates/spt-term/src/reader.rs",
2026-07-26T22:33:02.8812133Z               "line": 194
2026-07-26T22:33:02.8812227Z             },
2026-07-26T22:33:02.8812332Z             {
2026-07-26T22:33:02.8812466Z               "path": "crates/spt-term/src/reader.rs",
2026-07-26T22:33:02.8812589Z               "line": 270
2026-07-26T22:33:02.8812714Z             },
2026-07-26T22:33:02.8812838Z             {
2026-07-26T22:33:02.8812979Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:02.8813080Z               "line": 297
2026-07-26T22:33:02.8813188Z             }
2026-07-26T22:33:02.8813291Z           ]
2026-07-26T22:33:02.8813397Z         },
2026-07-26T22:33:02.8813498Z         "int": {
2026-07-26T22:33:02.8813620Z           "complete": false,
2026-07-26T22:33:02.8813731Z           "evidence": []
2026-07-26T22:33:02.8813831Z         },
2026-07-26T22:33:02.8813925Z         "unit": {
2026-07-26T22:33:02.8814046Z           "complete": true,
2026-07-26T22:33:02.8814155Z           "evidence": [
2026-07-26T22:33:02.8814259Z             {
2026-07-26T22:33:02.8814399Z               "path": "crates/spt-term/src/reader.rs",
2026-07-26T22:33:02.8814517Z               "line": 310
2026-07-26T22:33:02.8814622Z             },
2026-07-26T22:33:02.8814723Z             {
2026-07-26T22:33:02.8814861Z               "path": "crates/spt-term/src/reader.rs",
2026-07-26T22:33:02.8814976Z               "line": 341
2026-07-26T22:33:02.8815080Z             },
2026-07-26T22:33:02.8815190Z             {
2026-07-26T22:33:02.8815324Z               "path": "crates/spt-term/src/reader.rs",
2026-07-26T22:33:02.8815432Z               "line": 399
2026-07-26T22:33:02.8815523Z             },
2026-07-26T22:33:02.8815630Z             {
2026-07-26T22:33:02.8815771Z               "path": "crates/spt-term/src/reader.rs",
2026-07-26T22:33:02.8815889Z               "line": 433
2026-07-26T22:33:02.8815989Z             },
2026-07-26T22:33:02.8816088Z             {
2026-07-26T22:33:02.8816225Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:02.8816350Z               "line": 1549
2026-07-26T22:33:02.8816450Z             }
2026-07-26T22:33:02.8816674Z           ]
2026-07-26T22:33:02.8816778Z         }
2026-07-26T22:33:02.8816879Z       }
2026-07-26T22:33:02.8816970Z     },
2026-07-26T22:33:02.8817075Z     {
2026-07-26T22:33:02.8817203Z       "id": "REQ-ECHO-DROP-DIR-RESOLVE",
2026-07-26T22:33:02.8820133Z       "title": "W1 (LIFECYCLE-TRUTH): fire_echo resolves the manifest commune_dir through the SAME resolver its siblings use before any write. ROOT (pinned): fire_echo (spt-daemon lifecycle.rs:790) passes the RAW manifest commune_dir into run_echo_commune -> echo.rs:115-117 create_dir_all+join; a relative `.claude` under the WMI-launched daemon's System32 cwd = os error 5 deterministic (two live psyches stamped FAILED on it). Siblings already resolve correctly (ingest ~:583, psyche_drop_file :1072 via resolve_endpoint_drop_dir(raw, cwd)). FIX: fire_echo routes through resolve_endpoint_drop_dir; relative-with-no-cwd = SKIP LOUD (stderr), never a raw relative write — kills the latent-worse variant where a writable daemon cwd writes the drop to a WRONG dir silently (echo communes lost, no error). Hardening riders (same touch, no separate REQ): bounded EACCES retry on the drop write; echo claude spawn gets explicit cwd = endpoint cwd (perri ask).",
2026-07-26T22:33:02.8820361Z       "requiredStages": [
2026-07-26T22:33:02.8820458Z         "impl",
2026-07-26T22:33:02.8820556Z         "unit"
2026-07-26T22:33:02.8820657Z       ],
2026-07-26T22:33:02.8820792Z       "stages": {
2026-07-26T22:33:02.8820885Z         "doc": {
2026-07-26T22:33:02.8821005Z           "complete": false,
2026-07-26T22:33:02.8821111Z           "evidence": []
2026-07-26T22:33:02.8821218Z         },
2026-07-26T22:33:02.8821322Z         "impl": {
2026-07-26T22:33:02.8821443Z           "complete": true,
2026-07-26T22:33:02.8821542Z           "evidence": [
2026-07-26T22:33:02.8821647Z             {
2026-07-26T22:33:02.8821800Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.8821943Z               "line": 268
2026-07-26T22:33:02.8822044Z             },
2026-07-26T22:33:02.8822149Z             {
2026-07-26T22:33:02.8822301Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.8822411Z               "line": 850
2026-07-26T22:33:02.8822520Z             },
2026-07-26T22:33:02.8822625Z             {
2026-07-26T22:33:02.8822768Z               "path": "crates/spt-live/src/echo.rs",
2026-07-26T22:33:02.8822873Z               "line": 96
2026-07-26T22:33:02.8822969Z             },
2026-07-26T22:33:02.8823069Z             {
2026-07-26T22:33:02.8823216Z               "path": "crates/spt-live/src/echo.rs",
2026-07-26T22:33:02.8823323Z               "line": 146
2026-07-26T22:33:02.8823425Z             },
2026-07-26T22:33:02.8823530Z             {
2026-07-26T22:33:02.8823687Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.8823800Z               "line": 728
2026-07-26T22:33:02.8823904Z             },
2026-07-26T22:33:02.8823995Z             {
2026-07-26T22:33:02.8824152Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.8824267Z               "line": 788
2026-07-26T22:33:02.8824367Z             }
2026-07-26T22:33:02.8824467Z           ]
2026-07-26T22:33:02.8824572Z         },
2026-07-26T22:33:02.8824663Z         "int": {
2026-07-26T22:33:02.8824777Z           "complete": false,
2026-07-26T22:33:02.8824887Z           "evidence": []
2026-07-26T22:33:02.8824987Z         },
2026-07-26T22:33:02.8825087Z         "unit": {
2026-07-26T22:33:02.8825201Z           "complete": true,
2026-07-26T22:33:02.8825302Z           "evidence": [
2026-07-26T22:33:02.8825401Z             {
2026-07-26T22:33:02.8825551Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.8825701Z               "line": 2098
2026-07-26T22:33:02.8825817Z             },
2026-07-26T22:33:02.8825912Z             {
2026-07-26T22:33:02.8826045Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.8826175Z               "line": 2152
2026-07-26T22:33:02.8826279Z             },
2026-07-26T22:33:02.8826502Z             {
2026-07-26T22:33:02.8826643Z               "path": "crates/spt-live/src/echo.rs",
2026-07-26T22:33:02.8826766Z               "line": 280
2026-07-26T22:33:02.8826867Z             },
2026-07-26T22:33:02.8826977Z             {
2026-07-26T22:33:02.8827124Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.8827239Z               "line": 1174
2026-07-26T22:33:02.8827343Z             }
2026-07-26T22:33:02.8827449Z           ]
2026-07-26T22:33:02.8827554Z         }
2026-07-26T22:33:02.8827658Z       }
2026-07-26T22:33:02.8827753Z     },
2026-07-26T22:33:02.8827845Z     {
2026-07-26T22:33:02.8827997Z       "id": "REQ-EFFECTIVE-INSTANCE-STATE",
2026-07-26T22:33:02.8832150Z       "title": "A-1 (REMOTE-TRUTH triage §A + ADR-0033 §Decision): the effective instance state of a perch is DERIVED through ONE shared function — liveness discriminates warm/cold, stored rest intent refines within warm, absent intent NEVER defaults active. ROOT (certain): resting::apply_event derived its `from` off the stored rest_state field ALONE (resting.rs:225, `unwrap_or(RestState::Active)`) — a cold perch (offline) with no intent answered `from=Active`, so a Wake event found it 'already in target state' and returned Ok(None) = the field NO_EDGE-on-a-definitely-suspended-endpoint bug (the banked F-028 rest_state-void seed). advertised_status (registryhost.rs:821) ALREADY derived correctly (is_perch_alive→intent-refined / is_perch_unbound→Dormant / cold→Suspended) — the two readers disagreed. FIX (Q1 shared derivation, hazard-class): a pure `effective_rest_state(alive, unbound, intent) -> RestState` mirroring advertised_status, consumed by BOTH advertised_status (mapped RestState→Status, behavior identical) AND apply_event's `from` (real is_perch_alive/is_perch_unbound reads); void + cold ⇒ Suspended. Bonus: kills the spurious active→suspend echo a cold+void perch used to fire (on_rest_edge on a dead driver). Red-first: perch status=offline + no rest_state → daemon_rest_event(Wake) yields from=Suspended→to=Active EdgeReport, not Ok(None).",
2026-07-26T22:33:02.8832479Z       "requiredStages": [
2026-07-26T22:33:02.8832585Z         "doc",
2026-07-26T22:33:02.8832685Z         "impl",
2026-07-26T22:33:02.8832789Z         "unit"
2026-07-26T22:33:02.8832895Z       ],
2026-07-26T22:33:02.8832994Z       "stages": {
2026-07-26T22:33:02.8833094Z         "doc": {
2026-07-26T22:33:02.8833214Z           "complete": true,
2026-07-26T22:33:02.8833333Z           "evidence": [
2026-07-26T22:33:02.8833433Z             {
2026-07-26T22:33:02.8833577Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.8833680Z               "line": 606
2026-07-26T22:33:02.8833781Z             }
2026-07-26T22:33:02.8833873Z           ]
2026-07-26T22:33:02.8833976Z         },
2026-07-26T22:33:02.8834076Z         "impl": {
2026-07-26T22:33:02.8834200Z           "complete": true,
2026-07-26T22:33:02.8834322Z           "evidence": [
2026-07-26T22:33:02.8834421Z             {
2026-07-26T22:33:02.8834584Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:02.8834722Z               "line": 947
2026-07-26T22:33:02.8834827Z             },
2026-07-26T22:33:02.8834932Z             {
2026-07-26T22:33:02.8835083Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:02.8835204Z               "line": 224
2026-07-26T22:33:02.8835303Z             },
2026-07-26T22:33:02.8835403Z             {
2026-07-26T22:33:02.8835542Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:02.8835661Z               "line": 309
2026-07-26T22:33:02.8835762Z             }
2026-07-26T22:33:02.8835866Z           ]
2026-07-26T22:33:02.8835966Z         },
2026-07-26T22:33:02.8836067Z         "int": {
2026-07-26T22:33:02.8836181Z           "complete": false,
2026-07-26T22:33:02.8836300Z           "evidence": []
2026-07-26T22:33:02.8836406Z         },
2026-07-26T22:33:02.8836515Z         "unit": {
2026-07-26T22:33:02.8836629Z           "complete": true,
2026-07-26T22:33:02.8836745Z           "evidence": [
2026-07-26T22:33:02.8836957Z             {
2026-07-26T22:33:02.8837114Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:02.8837222Z               "line": 947
2026-07-26T22:33:02.8837331Z             },
2026-07-26T22:33:02.8837442Z             {
2026-07-26T22:33:02.8837603Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:02.8837714Z               "line": 981
2026-07-26T22:33:02.8837823Z             },
2026-07-26T22:33:02.8837918Z             {
2026-07-26T22:33:02.8838071Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:02.8838199Z               "line": 1072
2026-07-26T22:33:02.8838300Z             }
2026-07-26T22:33:02.8838405Z           ]
2026-07-26T22:33:02.8838505Z         }
2026-07-26T22:33:02.8838605Z       }
2026-07-26T22:33:02.8838701Z     },
2026-07-26T22:33:02.8838872Z     {
2026-07-26T22:33:02.8839063Z       "id": "REQ-ELEVATE-1",
2026-07-26T22:33:02.8842260Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-07-26T22:33:02.8842438Z       "requiredStages": [
2026-07-26T22:33:02.8842534Z         "doc",
2026-07-26T22:33:02.8842635Z         "impl",
2026-07-26T22:33:02.8842739Z         "unit"
2026-07-26T22:33:02.8842839Z       ],
2026-07-26T22:33:02.8842940Z       "stages": {
2026-07-26T22:33:02.8843049Z         "doc": {
2026-07-26T22:33:02.8843164Z           "complete": true,
2026-07-26T22:33:02.8843274Z           "evidence": [
2026-07-26T22:33:02.8843368Z             {
2026-07-26T22:33:02.8843493Z               "path": "CONTEXT.md",
2026-07-26T22:33:02.8843602Z               "line": 795
2026-07-26T22:33:02.8843697Z             }
2026-07-26T22:33:02.8843789Z           ]
2026-07-26T22:33:02.8843897Z         },
2026-07-26T22:33:02.8843998Z         "impl": {
2026-07-26T22:33:02.8844123Z           "complete": true,
2026-07-26T22:33:02.8844226Z           "evidence": [
2026-07-26T22:33:02.8844336Z             {
2026-07-26T22:33:02.8844467Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8844584Z               "line": 7917
2026-07-26T22:33:02.8844688Z             },
2026-07-26T22:33:02.8844798Z             {
2026-07-26T22:33:02.8844920Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8845044Z               "line": 7962
2026-07-26T22:33:02.8845140Z             },
2026-07-26T22:33:02.8845244Z             {
2026-07-26T22:33:02.8845368Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8845487Z               "line": 8024
2026-07-26T22:33:02.8845587Z             },
2026-07-26T22:33:02.8845692Z             {
2026-07-26T22:33:02.8845831Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:02.8845949Z               "line": 92
2026-07-26T22:33:02.8846046Z             },
2026-07-26T22:33:02.8846155Z             {
2026-07-26T22:33:02.8846293Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:02.8846408Z               "line": 148
2026-07-26T22:33:02.8846507Z             }
2026-07-26T22:33:02.8846612Z           ]
2026-07-26T22:33:02.8846704Z         },
2026-07-26T22:33:02.8846913Z         "int": {
2026-07-26T22:33:02.8847033Z           "complete": false,
2026-07-26T22:33:02.8847146Z           "evidence": []
2026-07-26T22:33:02.8847252Z         },
2026-07-26T22:33:02.8847357Z         "unit": {
2026-07-26T22:33:02.8847475Z           "complete": true,
2026-07-26T22:33:02.8847593Z           "evidence": [
2026-07-26T22:33:02.8847693Z             {
2026-07-26T22:33:02.8847834Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:02.8847944Z               "line": 442
2026-07-26T22:33:02.8848054Z             },
2026-07-26T22:33:02.8848163Z             {
2026-07-26T22:33:02.8848297Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:02.8848416Z               "line": 460
2026-07-26T22:33:02.8848525Z             }
2026-07-26T22:33:02.8848626Z           ]
2026-07-26T22:33:02.8848722Z         }
2026-07-26T22:33:02.8848927Z       }
2026-07-26T22:33:02.8849117Z     },
2026-07-26T22:33:02.8849213Z     {
2026-07-26T22:33:02.8853637Z       "id": "REQ-ENDPOINT-AUTOSTART",
2026-07-26T22:33:02.8859080Z       "title": "MSG-IDENTITY W5 / F-038 (flynn operator-directed ask 2026-07-10, SPT-CORE-NEEDS #7 + deployah field-confirm same day: mobile-gw alive=false after the v0.30.6 full daemon restart = this feature's absence, live): an endpoint can be marked a STARTUP DEFAULT so the daemon brings it back up at daemon start — Gateway-class endpoints are infra (the phone treats mobile-gw as always-there; box reboot / daemon cold start currently leaves it down until hands-on). SHAPE RULED (doyle, dispatch): (a) `spt endpoint run --save` persists the run (id + adapter/profile + args) as a startup default REPLAYED at daemon start, symmetric with the shipped `subnet attach/detach --save` precedent — smallest orthogonal cut, explicit operator intent, no interaction with effective_rest_state/F-035 reader-parity semantics (shape (c) restore-what-was-up REJECTED for now: principled but couples to the rest_state neighborhood that just churned; revisit if --save proves insufficient in the field). A saved endpoint that fails to come up logs loud + does not block daemon start or other replays. flynn docs sweep confirmed missing-feature not docs-gap (rest/wake manual-only; no endpoint analog of subnet --save; no manifest field; no api surface). Gate: int — daemon restart brings a --save'd endpoint back up (fresh daemon, saved default, endpoint reaches its steady state without hands-on); doc — public docs page for the verb (VERSION-scoped); unit — persistence round-trip + replay skip-on-missing-adapter loud. Kin subnet --save (the symmetry precedent), REQ-LIST-JSON-LIVENESS-PARITY + REQ-HAZARD-BIND-REST-STATE-CARRY (the F-035 neighborhood shape (c) would have coupled to), [[spt-core-findings-backlog]] F-038. Interim on flynn's box (logon scheduled task) dissolves when this lands.",
2026-07-26T22:33:02.8859282Z       "requiredStages": [
2026-07-26T22:33:02.8859400Z         "doc",
2026-07-26T22:33:02.8859511Z         "impl",
2026-07-26T22:33:02.8859620Z         "unit",
2026-07-26T22:33:02.8859749Z         "int"
2026-07-26T22:33:02.8859849Z       ],
2026-07-26T22:33:02.8859958Z       "stages": {
2026-07-26T22:33:02.8860064Z         "doc": {
2026-07-26T22:33:02.8860174Z           "complete": true,
2026-07-26T22:33:02.8860292Z           "evidence": [
2026-07-26T22:33:02.8860398Z             {
2026-07-26T22:33:02.8860564Z               "path": "docs-site/src/instances/overview.md",
2026-07-26T22:33:02.8860663Z               "line": 31
2026-07-26T22:33:02.8860778Z             }
2026-07-26T22:33:02.8860881Z           ]
2026-07-26T22:33:02.8860984Z         },
2026-07-26T22:33:02.8861086Z         "impl": {
2026-07-26T22:33:02.8861214Z           "complete": true,
2026-07-26T22:33:02.8861318Z           "evidence": [
2026-07-26T22:33:02.8861424Z             {
2026-07-26T22:33:02.8861576Z               "path": "crates/spt-daemon/src/autostart.rs",
2026-07-26T22:33:02.8861696Z               "line": 36
2026-07-26T22:33:02.8861791Z             },
2026-07-26T22:33:02.8861900Z             {
2026-07-26T22:33:02.8862192Z               "path": "crates/spt-daemon/src/config.rs",
2026-07-26T22:33:02.8862306Z               "line": 75
2026-07-26T22:33:02.8862411Z             },
2026-07-26T22:33:02.8862506Z             {
2026-07-26T22:33:02.8862655Z               "path": "crates/spt-daemon/src/config.rs",
2026-07-26T22:33:02.8862768Z               "line": 337
2026-07-26T22:33:02.8862869Z             },
2026-07-26T22:33:02.8862970Z             {
2026-07-26T22:33:02.8863107Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.8863216Z               "line": 220
2026-07-26T22:33:02.8863318Z             },
2026-07-26T22:33:02.8863417Z             {
2026-07-26T22:33:02.8863554Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8863674Z               "line": 2312
2026-07-26T22:33:02.8863769Z             }
2026-07-26T22:33:02.8863873Z           ]
2026-07-26T22:33:02.8864084Z         },
2026-07-26T22:33:02.8864193Z         "int": {
2026-07-26T22:33:02.8864313Z           "complete": true,
2026-07-26T22:33:02.8864437Z           "evidence": [
2026-07-26T22:33:02.8864536Z             {
2026-07-26T22:33:02.8864722Z               "path": "crates/spt/tests/endpoint_autostart_e2e.rs",
2026-07-26T22:33:02.8864865Z               "line": 258
2026-07-26T22:33:02.8864971Z             }
2026-07-26T22:33:02.8865071Z           ]
2026-07-26T22:33:02.8865171Z         },
2026-07-26T22:33:02.8865272Z         "unit": {
2026-07-26T22:33:02.8865394Z           "complete": true,
2026-07-26T22:33:02.8865495Z           "evidence": [
2026-07-26T22:33:02.8865601Z             {
2026-07-26T22:33:02.8865751Z               "path": "crates/spt-daemon/src/autostart.rs",
2026-07-26T22:33:02.8865875Z               "line": 145
2026-07-26T22:33:02.8865979Z             },
2026-07-26T22:33:02.8866073Z             {
2026-07-26T22:33:02.8866226Z               "path": "crates/spt-daemon/src/autostart.rs",
2026-07-26T22:33:02.8866345Z               "line": 161
2026-07-26T22:33:02.8866449Z             },
2026-07-26T22:33:02.8866551Z             {
2026-07-26T22:33:02.8866707Z               "path": "crates/spt-daemon/src/config.rs",
2026-07-26T22:33:02.8866803Z               "line": 536
2026-07-26T22:33:02.8866903Z             },
2026-07-26T22:33:02.8867003Z             {
2026-07-26T22:33:02.8867152Z               "path": "crates/spt-daemon/src/config.rs",
2026-07-26T22:33:02.8867261Z               "line": 588
2026-07-26T22:33:02.8867365Z             }
2026-07-26T22:33:02.8867466Z           ]
2026-07-26T22:33:02.8867566Z         }
2026-07-26T22:33:02.8867665Z       }
2026-07-26T22:33:02.8867767Z     },
2026-07-26T22:33:02.8867862Z     {
2026-07-26T22:33:02.8867994Z       "id": "REQ-ENDPOINT-CYCLE-HONEST",
2026-07-26T22:33:02.8870275Z       "title": "REGISTRY-LIFECYCLE W3 (ADR-0041 decision 6, operator deployah stop/run wedge): cycle verbs share ONE liveness authority — the ALREADY_LIVE dup-guard liveness-probes the claimed session client tree before refusing (dead tree means reap + respawn honestly, never a refusal citing a zombie); the shutdown state machine consults the same source so is-it-live has one answer (no ALREADY_LIVE / list-OFFLINE / shutdown-NO_EDGE three-way contradiction on the same endpoint). Gate: impl — probing dup-guard + unified authority; unit — dead-tree claim probes and reaps, live claim still refuses; int — controlled zombie (killed client tree, surviving hosted record) leads to endpoint run succeeding honestly end-to-end; doc — ADR-0041.",
2026-07-26T22:33:02.8870428Z       "requiredStages": [
2026-07-26T22:33:02.8870528Z         "doc",
2026-07-26T22:33:02.8870634Z         "impl",
2026-07-26T22:33:02.8870734Z         "unit",
2026-07-26T22:33:02.8870833Z         "int"
2026-07-26T22:33:02.8870934Z       ],
2026-07-26T22:33:02.8871035Z       "stages": {
2026-07-26T22:33:02.8871148Z         "doc": {
2026-07-26T22:33:02.8871271Z           "complete": true,
2026-07-26T22:33:02.8871413Z           "evidence": [
2026-07-26T22:33:02.8871512Z             {
2026-07-26T22:33:02.8871689Z               "path": "docs/adr/0041-endpoint-lifecycle-truth.md",
2026-07-26T22:33:02.8871922Z               "line": 77
2026-07-26T22:33:02.8872032Z             }
2026-07-26T22:33:02.8872122Z           ]
2026-07-26T22:33:02.8872227Z         },
2026-07-26T22:33:02.8872327Z         "impl": {
2026-07-26T22:33:02.8872442Z           "complete": true,
2026-07-26T22:33:02.8872542Z           "evidence": [
2026-07-26T22:33:02.8872642Z             {
2026-07-26T22:33:02.8872785Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8872900Z               "line": 299
2026-07-26T22:33:02.8872995Z             },
2026-07-26T22:33:02.8873100Z             {
2026-07-26T22:33:02.8873244Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8873352Z               "line": 331
2026-07-26T22:33:02.8873453Z             },
2026-07-26T22:33:02.8873559Z             {
2026-07-26T22:33:02.8873801Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8873921Z               "line": 2783
2026-07-26T22:33:02.8874019Z             },
2026-07-26T22:33:02.8874128Z             {
2026-07-26T22:33:02.8874272Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8874390Z               "line": 4273
2026-07-26T22:33:02.8874491Z             },
2026-07-26T22:33:02.8874597Z             {
2026-07-26T22:33:02.8874738Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8874859Z               "line": 4563
2026-07-26T22:33:02.8874954Z             },
2026-07-26T22:33:02.8875053Z             {
2026-07-26T22:33:02.8875188Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.8875312Z               "line": 1059
2026-07-26T22:33:02.8875411Z             },
2026-07-26T22:33:02.8875512Z             {
2026-07-26T22:33:02.8875655Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.8875775Z               "line": 1065
2026-07-26T22:33:02.8875879Z             },
2026-07-26T22:33:02.8875984Z             {
2026-07-26T22:33:02.8876118Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.8876236Z               "line": 1072
2026-07-26T22:33:02.8876335Z             },
2026-07-26T22:33:02.8876431Z             {
2026-07-26T22:33:02.8876586Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:02.8876699Z               "line": 285
2026-07-26T22:33:02.8876806Z             },
2026-07-26T22:33:02.8876905Z             {
2026-07-26T22:33:02.8877048Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:02.8877153Z               "line": 415
2026-07-26T22:33:02.8877262Z             },
2026-07-26T22:33:02.8877358Z             {
2026-07-26T22:33:02.8877492Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8877605Z               "line": 2138
2026-07-26T22:33:02.8877702Z             },
2026-07-26T22:33:02.8877792Z             {
2026-07-26T22:33:02.8877925Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8878031Z               "line": 3951
2026-07-26T22:33:02.8878131Z             },
2026-07-26T22:33:02.8878235Z             {
2026-07-26T22:33:02.8878370Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:02.8878473Z               "line": 1059
2026-07-26T22:33:02.8878578Z             }
2026-07-26T22:33:02.8878680Z           ]
2026-07-26T22:33:02.8878784Z         },
2026-07-26T22:33:02.8878884Z         "int": {
2026-07-26T22:33:02.8879085Z           "complete": true,
2026-07-26T22:33:02.8879188Z           "evidence": [
2026-07-26T22:33:02.8879288Z             {
2026-07-26T22:33:02.8879448Z               "path": "crates/spt-daemon/tests/spawn_truth.rs",
2026-07-26T22:33:02.8879557Z               "line": 317
2026-07-26T22:33:02.8879658Z             }
2026-07-26T22:33:02.8879763Z           ]
2026-07-26T22:33:02.8879867Z         },
2026-07-26T22:33:02.8879978Z         "unit": {
2026-07-26T22:33:02.8880097Z           "complete": true,
2026-07-26T22:33:02.8880220Z           "evidence": [
2026-07-26T22:33:02.8880317Z             {
2026-07-26T22:33:02.8880463Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.8880664Z               "line": 6144
2026-07-26T22:33:02.8880768Z             },
2026-07-26T22:33:02.8880864Z             {
2026-07-26T22:33:02.8881012Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:02.8881131Z               "line": 1021
2026-07-26T22:33:02.8881242Z             }
2026-07-26T22:33:02.8881336Z           ]
2026-07-26T22:33:02.8881446Z         }
2026-07-26T22:33:02.8881547Z       }
2026-07-26T22:33:02.8881651Z     },
2026-07-26T22:33:02.8881755Z     {
2026-07-26T22:33:02.8881903Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-07-26T22:33:02.8883726Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-07-26T22:33:02.8883970Z       "requiredStages": [
2026-07-26T22:33:02.8884080Z         "doc",
2026-07-26T22:33:02.8884185Z         "impl",
2026-07-26T22:33:02.8884289Z         "unit"
2026-07-26T22:33:02.8884386Z       ],
2026-07-26T22:33:02.8884490Z       "stages": {
2026-07-26T22:33:02.8884589Z         "doc": {
2026-07-26T22:33:02.8884708Z           "complete": true,
2026-07-26T22:33:02.8884809Z           "evidence": [
2026-07-26T22:33:02.8884903Z             {
2026-07-26T22:33:02.8885027Z               "path": "CONTEXT.md",
2026-07-26T22:33:02.8885143Z               "line": 822
2026-07-26T22:33:02.8885256Z             }
2026-07-26T22:33:02.8885352Z           ]
2026-07-26T22:33:02.8885466Z         },
2026-07-26T22:33:02.8885627Z         "impl": {
2026-07-26T22:33:02.8885795Z           "complete": true,
2026-07-26T22:33:02.8885971Z           "evidence": [
2026-07-26T22:33:02.8886134Z             {
2026-07-26T22:33:02.8886420Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8886581Z               "line": 3055
2026-07-26T22:33:02.8886730Z             },
2026-07-26T22:33:02.8886881Z             {
2026-07-26T22:33:02.8887029Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8887141Z               "line": 3388
2026-07-26T22:33:02.8887236Z             },
2026-07-26T22:33:02.8887371Z             {
2026-07-26T22:33:02.8887503Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8887623Z               "line": 3851
2026-07-26T22:33:02.8887718Z             }
2026-07-26T22:33:02.8887813Z           ]
2026-07-26T22:33:02.8887913Z         },
2026-07-26T22:33:02.8888029Z         "int": {
2026-07-26T22:33:02.8888151Z           "complete": false,
2026-07-26T22:33:02.8888267Z           "evidence": []
2026-07-26T22:33:02.8888367Z         },
2026-07-26T22:33:02.8888480Z         "unit": {
2026-07-26T22:33:02.8888601Z           "complete": true,
2026-07-26T22:33:02.8888705Z           "evidence": [
2026-07-26T22:33:02.8888809Z             {
2026-07-26T22:33:02.8888935Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8889124Z               "line": 14689
2026-07-26T22:33:02.8889231Z             },
2026-07-26T22:33:02.8889321Z             {
2026-07-26T22:33:02.8889453Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8889555Z               "line": 15531
2026-07-26T22:33:02.8889659Z             }
2026-07-26T22:33:02.8889763Z           ]
2026-07-26T22:33:02.8889858Z         }
2026-07-26T22:33:02.8889957Z       }
2026-07-26T22:33:02.8890056Z     },
2026-07-26T22:33:02.8890151Z     {
2026-07-26T22:33:02.8890300Z       "id": "REQ-ENDPOINT-LIST-NODE-GROUPED",
2026-07-26T22:33:02.8894740Z       "title": "spt endpoint list is node-grouped over unique INSTANCES, not subnet-grouped over duplicated rows: one row per (id,node) instance — subnet duplication collapsed (ADR-0006 §1: subnet is never an identity axis), freshest-epoch wins a cross-subnet status disagreement (the resolve_among twin rule) — grouped under 'This node: <label>' (cyan; local roster is the status truth, advertised-status vocabulary, corrupt = suspended + corrupt annotation) then remote nodes alphabetical (node name orange 38;5;208, the legacy $LIVE orange), each node carrying a light-gray 'Shared subnets:' line (subnets among our memberships where that node gossips any visible row; per-instance subnet detail stays in --json/--detail), instance rows [id, endpoint_type, glyph, status] (endpoint_type threaded from Instance.endpoint_type through ResourceRow — additive, pre-field rows render '-'), per-node 'Total:' lines with NO grand total (the stderr ENDPOINTS:<n> line is REMOVED — it counted subnet rows, so the same instance in N subnets counted N times), SELF pin kept first with a '(self @ <node>)' marker (REQ-WHOAMI-1 alias; self also appears as a This-node row so the node total stays honest), remote nodes with zero visible instances skipped, --subnet narrows the union to that subnet's view, --json DTO structure UNCHANGED (committed surface; gains only an additive endpoint_type field). Grill-with-docs ruling 2026-07-02 (operator + doyle); sibling of REQ-PICKER-NODE-GROUPING (the picker half of the same dedup law).",
2026-07-26T22:33:02.8895248Z       "requiredStages": [
2026-07-26T22:33:02.8895349Z         "impl",
2026-07-26T22:33:02.8895449Z         "unit"
2026-07-26T22:33:02.8895548Z       ],
2026-07-26T22:33:02.8895655Z       "stages": {
2026-07-26T22:33:02.8895750Z         "doc": {
2026-07-26T22:33:02.8895877Z           "complete": false,
2026-07-26T22:33:02.8895984Z           "evidence": []
2026-07-26T22:33:02.8896089Z         },
2026-07-26T22:33:02.8896192Z         "impl": {
2026-07-26T22:33:02.8896336Z           "complete": true,
2026-07-26T22:33:02.8896441Z           "evidence": [
2026-07-26T22:33:02.8896546Z             {
2026-07-26T22:33:02.8896708Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:02.8896827Z               "line": 522
2026-07-26T22:33:02.8896929Z             },
2026-07-26T22:33:02.8897032Z             {
2026-07-26T22:33:02.8897171Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:02.8897286Z               "line": 529
2026-07-26T22:33:02.8897389Z             },
2026-07-26T22:33:02.8897493Z             {
2026-07-26T22:33:02.8897641Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:02.8897753Z               "line": 605
2026-07-26T22:33:02.8897859Z             },
2026-07-26T22:33:02.8897955Z             {
2026-07-26T22:33:02.8898091Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:02.8898193Z               "line": 607
2026-07-26T22:33:02.8898293Z             },
2026-07-26T22:33:02.8898401Z             {
2026-07-26T22:33:02.8898531Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8898650Z               "line": 3111
2026-07-26T22:33:02.8898749Z             },
2026-07-26T22:33:02.8898856Z             {
2026-07-26T22:33:02.8899050Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8899170Z               "line": 3276
2026-07-26T22:33:02.8899270Z             },
2026-07-26T22:33:02.8899370Z             {
2026-07-26T22:33:02.8899490Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8899603Z               "line": 3412
2026-07-26T22:33:02.8899703Z             },
2026-07-26T22:33:02.8899805Z             {
2026-07-26T22:33:02.8899928Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8900038Z               "line": 3484
2026-07-26T22:33:02.8900134Z             },
2026-07-26T22:33:02.8900242Z             {
2026-07-26T22:33:02.8900365Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8900480Z               "line": 3499
2026-07-26T22:33:02.8900592Z             },
2026-07-26T22:33:02.8900692Z             {
2026-07-26T22:33:02.8900817Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8901040Z               "line": 3588
2026-07-26T22:33:02.8901146Z             },
2026-07-26T22:33:02.8901245Z             {
2026-07-26T22:33:02.8901375Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8901479Z               "line": 3626
2026-07-26T22:33:02.8901588Z             },
2026-07-26T22:33:02.8901684Z             {
2026-07-26T22:33:02.8901836Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8901946Z               "line": 3697
2026-07-26T22:33:02.8902047Z             },
2026-07-26T22:33:02.8902146Z             {
2026-07-26T22:33:02.8902271Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8902376Z               "line": 3850
2026-07-26T22:33:02.8902480Z             }
2026-07-26T22:33:02.8902580Z           ]
2026-07-26T22:33:02.8902677Z         },
2026-07-26T22:33:02.8902899Z         "int": {
2026-07-26T22:33:02.8903018Z           "complete": false,
2026-07-26T22:33:02.8903126Z           "evidence": []
2026-07-26T22:33:02.8903235Z         },
2026-07-26T22:33:02.8903335Z         "unit": {
2026-07-26T22:33:02.8903450Z           "complete": true,
2026-07-26T22:33:02.8903550Z           "evidence": [
2026-07-26T22:33:02.8903651Z             {
2026-07-26T22:33:02.8903802Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:02.8903927Z               "line": 1916
2026-07-26T22:33:02.8904027Z             },
2026-07-26T22:33:02.8904131Z             {
2026-07-26T22:33:02.8904251Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8904370Z               "line": 14310
2026-07-26T22:33:02.8904469Z             },
2026-07-26T22:33:02.8904571Z             {
2026-07-26T22:33:02.8904689Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8904799Z               "line": 14565
2026-07-26T22:33:02.8904895Z             },
2026-07-26T22:33:02.8905004Z             {
2026-07-26T22:33:02.8905128Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8905244Z               "line": 14596
2026-07-26T22:33:02.8905351Z             },
2026-07-26T22:33:02.8905452Z             {
2026-07-26T22:33:02.8905573Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8905690Z               "line": 14619
2026-07-26T22:33:02.8905789Z             },
2026-07-26T22:33:02.8905895Z             {
2026-07-26T22:33:02.8906014Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8906133Z               "line": 14637
2026-07-26T22:33:02.8906224Z             },
2026-07-26T22:33:02.8906329Z             {
2026-07-26T22:33:02.8906467Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8906568Z               "line": 14837
2026-07-26T22:33:02.8906672Z             },
2026-07-26T22:33:02.8906772Z             {
2026-07-26T22:33:02.8906896Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8907006Z               "line": 15328
2026-07-26T22:33:02.8907111Z             }
2026-07-26T22:33:02.8907216Z           ]
2026-07-26T22:33:02.8907316Z         }
2026-07-26T22:33:02.8907421Z       }
2026-07-26T22:33:02.8907526Z     },
2026-07-26T22:33:02.8907625Z     {
2026-07-26T22:33:02.8907760Z       "id": "REQ-ENDPOINT-LIST-NODE-IDENT",
2026-07-26T22:33:02.8909243Z       "title": "Bug #5: spt endpoint list local section header is the hardcoded literal LOCAL (this node) (render_local_section cli.rs:4359). Change to 'This node: <node-id>' using the existing node-ident idiom (os_hostname + nodeid public-key prefix, cli.rs:5531 — factor a node_ident_display helper); compute in the impure print_local_section, pass into the pure renderer. Update the two test assertions (cli.rs:10711/10716). See docs/NEXT-MILESTONE-BUG-TRIAGE.md #5.",
2026-07-26T22:33:02.8909373Z       "requiredStages": [
2026-07-26T22:33:02.8909463Z         "impl",
2026-07-26T22:33:02.8909573Z         "unit"
2026-07-26T22:33:02.8909673Z       ],
2026-07-26T22:33:02.8909801Z       "stages": {
2026-07-26T22:33:02.8909902Z         "doc": {
2026-07-26T22:33:02.8910022Z           "complete": false,
2026-07-26T22:33:02.8910249Z           "evidence": []
2026-07-26T22:33:02.8910356Z         },
2026-07-26T22:33:02.8910459Z         "impl": {
2026-07-26T22:33:02.8910578Z           "complete": true,
2026-07-26T22:33:02.8910685Z           "evidence": [
2026-07-26T22:33:02.8910788Z             {
2026-07-26T22:33:02.8910911Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8911025Z               "line": 3337
2026-07-26T22:33:02.8911129Z             },
2026-07-26T22:33:02.8911233Z             {
2026-07-26T22:33:02.8911358Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8911467Z               "line": 3852
2026-07-26T22:33:02.8911572Z             },
2026-07-26T22:33:02.8911678Z             {
2026-07-26T22:33:02.8911815Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8911915Z               "line": 7299
2026-07-26T22:33:02.8912130Z             }
2026-07-26T22:33:02.8912230Z           ]
2026-07-26T22:33:02.8912331Z         },
2026-07-26T22:33:02.8912431Z         "int": {
2026-07-26T22:33:02.8912549Z           "complete": false,
2026-07-26T22:33:02.8912665Z           "evidence": []
2026-07-26T22:33:02.8912769Z         },
2026-07-26T22:33:02.8912869Z         "unit": {
2026-07-26T22:33:02.8912989Z           "complete": true,
2026-07-26T22:33:02.8913098Z           "evidence": [
2026-07-26T22:33:02.8913204Z             {
2026-07-26T22:33:02.8913337Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8913450Z               "line": 14689
2026-07-26T22:33:02.8913550Z             }
2026-07-26T22:33:02.8913658Z           ]
2026-07-26T22:33:02.8913757Z         }
2026-07-26T22:33:02.8913853Z       }
2026-07-26T22:33:02.8913953Z     },
2026-07-26T22:33:02.8914057Z     {
2026-07-26T22:33:02.8914201Z       "id": "REQ-ENDPOINT-LIST-PALETTE",
2026-07-26T22:33:02.8916551Z       "title": "Bugs #11 + #15 (display): spt endpoint list renders status as plain text while the picker turns the same ResourceRow into the W5 colored EpDisplay palette. Fix: extract one shared ResourceRow-to-EpDisplay builder + make the picker display enums/helpers public, and have endpoint list render the same colored status squares (via helpfmt stdout_color, not ratatui Span). This also fixes #15 — a lone warm detached instance renders as its online flavor (Dormant maps to online) instead of leaking the bare word Dormant through the text-only list (no resting.rs/CONTEXT model change; operator ruling display-only). Couples REQ-PICKER-NODE-GROUPING (both edit subnet_rows — sequence the shared-builder extraction first). See docs/NEXT-MILESTONE-BUG-TRIAGE.md #11/#15.",
2026-07-26T22:33:02.8916698Z       "requiredStages": [
2026-07-26T22:33:02.8916803Z         "impl",
2026-07-26T22:33:02.8916903Z         "unit"
2026-07-26T22:33:02.8917007Z       ],
2026-07-26T22:33:02.8917114Z       "stages": {
2026-07-26T22:33:02.8917213Z         "doc": {
2026-07-26T22:33:02.8917356Z           "complete": false,
2026-07-26T22:33:02.8917466Z           "evidence": []
2026-07-26T22:33:02.8917570Z         },
2026-07-26T22:33:02.8917690Z         "impl": {
2026-07-26T22:33:02.8917809Z           "complete": true,
2026-07-26T22:33:02.8917923Z           "evidence": [
2026-07-26T22:33:02.8918025Z             {
2026-07-26T22:33:02.8918161Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8918286Z               "line": 3698
2026-07-26T22:33:02.8918383Z             },
2026-07-26T22:33:02.8918486Z             {
2026-07-26T22:33:02.8918633Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:02.8918747Z               "line": 568
2026-07-26T22:33:02.8918850Z             }
2026-07-26T22:33:02.8919036Z           ]
2026-07-26T22:33:02.8919136Z         },
2026-07-26T22:33:02.8919245Z         "int": {
2026-07-26T22:33:02.8919356Z           "complete": false,
2026-07-26T22:33:02.8919479Z           "evidence": []
2026-07-26T22:33:02.8919569Z         },
2026-07-26T22:33:02.8919690Z         "unit": {
2026-07-26T22:33:02.8919808Z           "complete": true,
2026-07-26T22:33:02.8919928Z           "evidence": [
2026-07-26T22:33:02.8920133Z             {
2026-07-26T22:33:02.8920262Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8920366Z               "line": 14310
2026-07-26T22:33:02.8920476Z             },
2026-07-26T22:33:02.8920572Z             {
2026-07-26T22:33:02.8920733Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:02.8920843Z               "line": 1772
2026-07-26T22:33:02.8920944Z             }
2026-07-26T22:33:02.8921048Z           ]
2026-07-26T22:33:02.8921148Z         }
2026-07-26T22:33:02.8921250Z       }
2026-07-26T22:33:02.8921348Z     },
2026-07-26T22:33:02.8921452Z     {
2026-07-26T22:33:02.8921595Z       "id": "REQ-ENDPOINT-LIST-PROJECT-COL",
2026-07-26T22:33:02.8923572Z       "title": "#8: spt endpoint list gains a second column <project>/ (the endpoint's LATEST project) -> 4 columns total: id / <project>/ / type / status. Local rows: head of REQ-PICKER-PROJECT-HISTORY-TRUTH (sessions.log-derived, owlery-excluded). Remote rows: head of REQ-GOSSIP-ADAPTER-PROJECTS recent_projects. Project IDs only + #4 disambiguation; '-' when unknown (pre-field remote rows). Extends the v0.21.0 node-grouped renderer (format_instance_rows — additive column, alignment char-width-safe). --json: additive project field on the row DTO (skip-if-none, N-1 safe). Depends on #1 + #4. See docs/NEXT-MILESTONE-PICKER-TRIAGE.md #8.",
2026-07-26T22:33:02.8923807Z       "requiredStages": [
2026-07-26T22:33:02.8923920Z         "impl",
2026-07-26T22:33:02.8924028Z         "unit"
2026-07-26T22:33:02.8924133Z       ],
2026-07-26T22:33:02.8924242Z       "stages": {
2026-07-26T22:33:02.8924379Z         "doc": {
2026-07-26T22:33:02.8924508Z           "complete": false,
2026-07-26T22:33:02.8924626Z           "evidence": []
2026-07-26T22:33:02.8924722Z         },
2026-07-26T22:33:02.8924833Z         "impl": {
2026-07-26T22:33:02.8924941Z           "complete": true,
2026-07-26T22:33:02.8925081Z           "evidence": [
2026-07-26T22:33:02.8925180Z             {
2026-07-26T22:33:02.8925323Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8925453Z               "line": 3117
2026-07-26T22:33:02.8925562Z             },
2026-07-26T22:33:02.8925657Z             {
2026-07-26T22:33:02.8925791Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8925896Z               "line": 3134
2026-07-26T22:33:02.8925996Z             },
2026-07-26T22:33:02.8926092Z             {
2026-07-26T22:33:02.8926224Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8926331Z               "line": 3278
2026-07-26T22:33:02.8926440Z             },
2026-07-26T22:33:02.8926539Z             {
2026-07-26T22:33:02.8926683Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8926783Z               "line": 3296
2026-07-26T22:33:02.8926891Z             },
2026-07-26T22:33:02.8926986Z             {
2026-07-26T22:33:02.8927121Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8927243Z               "line": 3401
2026-07-26T22:33:02.8927345Z             },
2026-07-26T22:33:02.8927454Z             {
2026-07-26T22:33:02.8927577Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8927697Z               "line": 3477
2026-07-26T22:33:02.8927792Z             },
2026-07-26T22:33:02.8927897Z             {
2026-07-26T22:33:02.8928017Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8928130Z               "line": 3567
2026-07-26T22:33:02.8928231Z             },
2026-07-26T22:33:02.8928327Z             {
2026-07-26T22:33:02.8928450Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8928570Z               "line": 3604
2026-07-26T22:33:02.8928679Z             },
2026-07-26T22:33:02.8928779Z             {
2026-07-26T22:33:02.8928919Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:02.8929126Z               "line": 460
2026-07-26T22:33:02.8929231Z             }
2026-07-26T22:33:02.8929335Z           ]
2026-07-26T22:33:02.8929434Z         },
2026-07-26T22:33:02.8929539Z         "int": {
2026-07-26T22:33:02.8929654Z           "complete": false,
2026-07-26T22:33:02.8929882Z           "evidence": []
2026-07-26T22:33:02.8929983Z         },
2026-07-26T22:33:02.8930097Z         "unit": {
2026-07-26T22:33:02.8930198Z           "complete": true,
2026-07-26T22:33:02.8930321Z           "evidence": [
2026-07-26T22:33:02.8930421Z             {
2026-07-26T22:33:02.8930555Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8930669Z               "line": 14378
2026-07-26T22:33:02.8930769Z             },
2026-07-26T22:33:02.8930870Z             {
2026-07-26T22:33:02.8930998Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8931113Z               "line": 14415
2026-07-26T22:33:02.8931213Z             },
2026-07-26T22:33:02.8931312Z             {
2026-07-26T22:33:02.8931442Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8931551Z               "line": 14437
2026-07-26T22:33:02.8931762Z             }
2026-07-26T22:33:02.8931862Z           ]
2026-07-26T22:33:02.8931965Z         }
2026-07-26T22:33:02.8932070Z       }
2026-07-26T22:33:02.8932174Z     },
2026-07-26T22:33:02.8932277Z     {
2026-07-26T22:33:02.8932425Z       "id": "REQ-ENDPOINT-LIST-RENDER-POLISH",
2026-07-26T22:33:02.8934736Z       "title": "A6 (F028, operator, 4 asks): `spt endpoint list` render polish. (a) the 'Shared subnets' line is NOT dim — LIGHT_GRAY = \"37\" (cli.rs:3019) is standard-palette WHITE, indistinguishable from row text; use SGR 90 (bright-black/gray) for the dim intent. (b) the `Total:` line takes the same dim color. (c) move the status glyph ADJACENT to the endpoint name (operator: 'right behind the endpoint name'), mirroring the picker's glyph-beside-name presentation (today the glyph sits at the end next to the status word). (d) color the status WORD like the picker TUI (green ONLINE / gray OFFLINE / blue when driven, matching picker glyph semantics). All in render_node_grouped/render_instance_row (cli.rs ~3000s); pure render with an injected color decision — unit-testable off a tty. See triage A6.",
2026-07-26T22:33:02.8934905Z       "requiredStages": [
2026-07-26T22:33:02.8935011Z         "impl",
2026-07-26T22:33:02.8935117Z         "unit"
2026-07-26T22:33:02.8935220Z       ],
2026-07-26T22:33:02.8935321Z       "stages": {
2026-07-26T22:33:02.8935426Z         "doc": {
2026-07-26T22:33:02.8935535Z           "complete": false,
2026-07-26T22:33:02.8935641Z           "evidence": []
2026-07-26T22:33:02.8935745Z         },
2026-07-26T22:33:02.8935845Z         "impl": {
2026-07-26T22:33:02.8935960Z           "complete": true,
2026-07-26T22:33:02.8936069Z           "evidence": [
2026-07-26T22:33:02.8936174Z             {
2026-07-26T22:33:02.8936304Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8936413Z               "line": 3827
2026-07-26T22:33:02.8936527Z             },
2026-07-26T22:33:02.8936628Z             {
2026-07-26T22:33:02.8936756Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8936896Z               "line": 3833
2026-07-26T22:33:02.8936995Z             }
2026-07-26T22:33:02.8937109Z           ]
2026-07-26T22:33:02.8937206Z         },
2026-07-26T22:33:02.8937315Z         "int": {
2026-07-26T22:33:02.8937427Z           "complete": false,
2026-07-26T22:33:02.8937532Z           "evidence": []
2026-07-26T22:33:02.8937633Z         },
2026-07-26T22:33:02.8937737Z         "unit": {
2026-07-26T22:33:02.8937857Z           "complete": true,
2026-07-26T22:33:02.8937971Z           "evidence": [
2026-07-26T22:33:02.8938075Z             {
2026-07-26T22:33:02.8938210Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8938329Z               "line": 14363
2026-07-26T22:33:02.8938433Z             },
2026-07-26T22:33:02.8938534Z             {
2026-07-26T22:33:02.8938663Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8938772Z               "line": 14825
2026-07-26T22:33:02.8938878Z             }
2026-07-26T22:33:02.8939058Z           ]
2026-07-26T22:33:02.8939164Z         }
2026-07-26T22:33:02.8939267Z       }
2026-07-26T22:33:02.8939377Z     },
2026-07-26T22:33:02.8939592Z     {
2026-07-26T22:33:02.8939743Z       "id": "REQ-ENDPOINT-LIST-REST-FILTER",
2026-07-26T22:33:02.8942230Z       "title": "spt endpoint list hides SUSPENDED instances by default; a new --show-all flag reveals them. Status-first row ordering with fixed precedence ONLINE > CONTROLLED > UNBOUND > SUSPENDED (when shown) > corrupt last, alphabetical by id within each band. Two invariants: (1) CORRUPT rows ALWAYS render regardless of filters — corrupt is a record condition demanding operator action (purge/re-mint), not resting clutter; hiding it would re-create counter-39 bug #3 (cross-ref REQ-HAZARD-CORRUPT-PERCH-COHERENCE, CONTEXT.md instance-state _Also avoid_); (2) the per-node Total line DISCLOSES the filter — 'Total: N (+M suspended hidden)' — so nothing silently vanishes. Registry-Offline rows stay excluded by projection law (resource_projection skips unroutable; unchanged). Grill-with-docs ruling 2026-07-02 (operator + doyle).",
2026-07-26T22:33:02.8942459Z       "requiredStages": [
2026-07-26T22:33:02.8942586Z         "impl",
2026-07-26T22:33:02.8942692Z         "unit"
2026-07-26T22:33:02.8942795Z       ],
2026-07-26T22:33:02.8942899Z       "stages": {
2026-07-26T22:33:02.8942995Z         "doc": {
2026-07-26T22:33:02.8943114Z           "complete": false,
2026-07-26T22:33:02.8943232Z           "evidence": []
2026-07-26T22:33:02.8943329Z         },
2026-07-26T22:33:02.8943434Z         "impl": {
2026-07-26T22:33:02.8943543Z           "complete": true,
2026-07-26T22:33:02.8943658Z           "evidence": [
2026-07-26T22:33:02.8943758Z             {
2026-07-26T22:33:02.8943881Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8943992Z               "line": 3781
2026-07-26T22:33:02.8944096Z             },
2026-07-26T22:33:02.8944196Z             {
2026-07-26T22:33:02.8944340Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8944454Z               "line": 3803
2026-07-26T22:33:02.8944550Z             },
2026-07-26T22:33:02.8944650Z             {
2026-07-26T22:33:02.8944793Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8944894Z               "line": 3833
2026-07-26T22:33:02.8944993Z             }
2026-07-26T22:33:02.8945092Z           ]
2026-07-26T22:33:02.8945196Z         },
2026-07-26T22:33:02.8945292Z         "int": {
2026-07-26T22:33:02.8945414Z           "complete": false,
2026-07-26T22:33:02.8945513Z           "evidence": []
2026-07-26T22:33:02.8945620Z         },
2026-07-26T22:33:02.8945724Z         "unit": {
2026-07-26T22:33:02.8945838Z           "complete": true,
2026-07-26T22:33:02.8945944Z           "evidence": [
2026-07-26T22:33:02.8946043Z             {
2026-07-26T22:33:02.8946167Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8946277Z               "line": 14763
2026-07-26T22:33:02.8946372Z             },
2026-07-26T22:33:02.8946472Z             {
2026-07-26T22:33:02.8946597Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8946720Z               "line": 14788
2026-07-26T22:33:02.8946821Z             },
2026-07-26T22:33:02.8946935Z             {
2026-07-26T22:33:02.8947049Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8947160Z               "line": 14816
2026-07-26T22:33:02.8947259Z             },
2026-07-26T22:33:02.8947364Z             {
2026-07-26T22:33:02.8947498Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8947607Z               "line": 14869
2026-07-26T22:33:02.8947702Z             }
2026-07-26T22:33:02.8947804Z           ]
2026-07-26T22:33:02.8947903Z         }
2026-07-26T22:33:02.8948002Z       }
2026-07-26T22:33:02.8948102Z     },
2026-07-26T22:33:02.8948203Z     {
2026-07-26T22:33:02.8948364Z       "id": "REQ-ENDPOINT-MESSAGE-ONLY-DISPLAY",
2026-07-26T22:33:02.8953242Z       "title": "An online agent-family endpoint with NO session surface reads as message-reachable, not as a harness-hosted live agent and not as a plain ONLINE. (hertz v0.39.0 field report 2026-07-21; doyle PRODUCT RULING — deliberately NEITHER of the two options offered.) OBSERVED: an adapterless `spt ready` perch (type=ready_agent, adapter=null, ready/alive true) displays plain ONLINE with '(unknown adapter)'. SOURCE: picker/model.rs display_status returns Online for every non-live_agent type (~680-681) BEFORE consulting controllable, and amber HarnessOnly is live-agent-only (~683-687). RULING: that type gate is CORRECT and STAYS. 'ONLINE - HARNESS ONLY' means one specific thing — a LIVE AGENT whose session surface is owned by a harness rather than a broker PTY. Broadening it to 'online non-controllable agent-family' would make one label mean two different things, which is how a status label starts lying. An adapterless ready receiver is a THIRD truth: message-reachable, no session surface at all, nothing to attach to ever. So: a DISTINCT display state (working name 'ONLINE - MESSAGE ONLY') keyed on the endpoint TYPE (ready_agent), never on absence-of-adapter, and never an invented adapter name. SECOND RULING (same surface, separate lie): '(unknown adapter)' is itself a small diagnostic untruth — adapter=null is ABSENT, deliberately so, not unknown; the copy must say absent. Gate: impl — the distinct display state + the absent-adapter copy; unit — the display table gains the ready_agent row and the existing live_agent/gateway rows are UNCHANGED (this must not perturb the HarnessOnly gate), plus a label assertion for the new state.",
2026-07-26T22:33:02.8953674Z       "requiredStages": [],
2026-07-26T22:33:02.8953783Z       "stages": {
2026-07-26T22:33:02.8953875Z         "doc": {
2026-07-26T22:33:02.8953999Z           "complete": false,
2026-07-26T22:33:02.8954098Z           "evidence": []
2026-07-26T22:33:02.8954195Z         },
2026-07-26T22:33:02.8954299Z         "impl": {
2026-07-26T22:33:02.8954427Z           "complete": false,
2026-07-26T22:33:02.8954538Z           "evidence": []
2026-07-26T22:33:02.8954642Z         },
2026-07-26T22:33:02.8954766Z         "int": {
2026-07-26T22:33:02.8954872Z           "complete": false,
2026-07-26T22:33:02.8954995Z           "evidence": []
2026-07-26T22:33:02.8955115Z         },
2026-07-26T22:33:02.8955215Z         "unit": {
2026-07-26T22:33:02.8955328Z           "complete": false,
2026-07-26T22:33:02.8955444Z           "evidence": []
2026-07-26T22:33:02.8955544Z         }
2026-07-26T22:33:02.8955647Z       }
2026-07-26T22:33:02.8955742Z     },
2026-07-26T22:33:02.8955842Z     {
2026-07-26T22:33:02.8955969Z       "id": "REQ-ENDPOINT-ONLINE-TRUTH",
2026-07-26T22:33:02.8959459Z       "title": "REGISTRY-LIFECYCLE W2 (ADR-0041 decisions 1+2, emphasys C1 P0): ONLINE is earned, not declared — cmd_listen stamps status=online only from actual persisted state + hosting authority, never from manifest psyche_init capability alone (no more ready_agent/controllable=false hybrid rows born online-authoritative); livehost reconcile SPLITS control cleanup (clear controlled/driven_by/viewer_count for EVERY endpoint absent from session truth, regardless of state/controllable) from offline classification (live_agent+controllable gate unchanged); legacy hybrid rows self-heal after a SUCCESSFUL broker query only (broker failure is never interpreted as an empty session set); terminal signoff/owner-loss = atomic CAS-guarded offline + ready/address removal WITHOUT overloading soft api session-end (/clear preserves the live listener). Gate: impl — creator gate + reconcile split + self-heal + terminal path; unit — creator refuses capability-only online, cleanup clears stamps on state-quirk rows, broker-failure never mass-offlines; int — dead-PID hybrid row does NOT survive a reconcile cycle (the immortal-row regression); doc — ADR-0041.",
2026-07-26T22:33:02.8959626Z       "requiredStages": [
2026-07-26T22:33:02.8959726Z         "doc",
2026-07-26T22:33:02.8959830Z         "impl",
2026-07-26T22:33:02.8959936Z         "unit",
2026-07-26T22:33:02.8960050Z         "int"
2026-07-26T22:33:02.8960131Z       ],
2026-07-26T22:33:02.8960251Z       "stages": {
2026-07-26T22:33:02.8960351Z         "doc": {
2026-07-26T22:33:02.8960469Z           "complete": true,
2026-07-26T22:33:02.8960575Z           "evidence": [
2026-07-26T22:33:02.8960797Z             {
2026-07-26T22:33:02.8960974Z               "path": "docs/adr/0041-endpoint-lifecycle-truth.md",
2026-07-26T22:33:02.8961090Z               "line": 41
2026-07-26T22:33:02.8961176Z             }
2026-07-26T22:33:02.8961277Z           ]
2026-07-26T22:33:02.8961377Z         },
2026-07-26T22:33:02.8961486Z         "impl": {
2026-07-26T22:33:02.8961602Z           "complete": true,
2026-07-26T22:33:02.8961720Z           "evidence": [
2026-07-26T22:33:02.8961824Z             {
2026-07-26T22:33:02.8961987Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.8962096Z               "line": 1292
2026-07-26T22:33:02.8962197Z             },
2026-07-26T22:33:02.8962292Z             {
2026-07-26T22:33:02.8962449Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8962764Z               "line": 712
2026-07-26T22:33:02.8962870Z             },
2026-07-26T22:33:02.8962964Z             {
2026-07-26T22:33:02.8963123Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8963237Z               "line": 744
2026-07-26T22:33:02.8963346Z             },
2026-07-26T22:33:02.8963447Z             {
2026-07-26T22:33:02.8963598Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8963707Z               "line": 781
2026-07-26T22:33:02.8963817Z             },
2026-07-26T22:33:02.8963920Z             {
2026-07-26T22:33:02.8964067Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.8964173Z               "line": 632
2026-07-26T22:33:02.8964272Z             },
2026-07-26T22:33:02.8964381Z             {
2026-07-26T22:33:02.8964525Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.8967956Z               "line": 749
2026-07-26T22:33:02.8968089Z             }
2026-07-26T22:33:02.8968202Z           ]
2026-07-26T22:33:02.8968299Z         },
2026-07-26T22:33:02.8968407Z         "int": {
2026-07-26T22:33:02.8968532Z           "complete": true,
2026-07-26T22:33:02.8968652Z           "evidence": [
2026-07-26T22:33:02.8968746Z             {
2026-07-26T22:33:02.8968938Z               "path": "crates/spt-daemon/tests/endpoint_lifecycle.rs",
2026-07-26T22:33:02.8969117Z               "line": 172
2026-07-26T22:33:02.8969227Z             }
2026-07-26T22:33:02.8969333Z           ]
2026-07-26T22:33:02.8969450Z         },
2026-07-26T22:33:02.8969552Z         "unit": {
2026-07-26T22:33:02.8969671Z           "complete": true,
2026-07-26T22:33:02.8969784Z           "evidence": [
2026-07-26T22:33:02.8969890Z             {
2026-07-26T22:33:02.8970038Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8970147Z               "line": 1462
2026-07-26T22:33:02.8970238Z             },
2026-07-26T22:33:02.8970338Z             {
2026-07-26T22:33:02.8970486Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8970605Z               "line": 1492
2026-07-26T22:33:02.8970705Z             },
2026-07-26T22:33:02.8970806Z             {
2026-07-26T22:33:02.8970953Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8971067Z               "line": 1537
2026-07-26T22:33:02.8971164Z             },
2026-07-26T22:33:02.8971263Z             {
2026-07-26T22:33:02.8971396Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.8971505Z               "line": 1558
2026-07-26T22:33:02.8971594Z             },
2026-07-26T22:33:02.8971693Z             {
2026-07-26T22:33:02.8971832Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.8971932Z               "line": 1651
2026-07-26T22:33:02.8972036Z             }
2026-07-26T22:33:02.8972132Z           ]
2026-07-26T22:33:02.8972233Z         }
2026-07-26T22:33:02.8972356Z       }
2026-07-26T22:33:02.8972467Z     },
2026-07-26T22:33:02.8972571Z     {
2026-07-26T22:33:02.8972695Z       "id": "REQ-ENDPOINT-PURGE",
2026-07-26T22:33:02.8977547Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-07-26T22:33:02.8977991Z       "requiredStages": [
2026-07-26T22:33:02.8978095Z         "doc",
2026-07-26T22:33:02.8978196Z         "impl",
2026-07-26T22:33:02.8978300Z         "unit",
2026-07-26T22:33:02.8978405Z         "int"
2026-07-26T22:33:02.8978501Z       ],
2026-07-26T22:33:02.8978615Z       "stages": {
2026-07-26T22:33:02.8978715Z         "doc": {
2026-07-26T22:33:02.8978836Z           "complete": true,
2026-07-26T22:33:02.8979049Z           "evidence": [
2026-07-26T22:33:02.8979155Z             {
2026-07-26T22:33:02.8979282Z               "path": "CONTEXT.md",
2026-07-26T22:33:02.8979417Z               "line": 193
2026-07-26T22:33:02.8979517Z             }
2026-07-26T22:33:02.8979620Z           ]
2026-07-26T22:33:02.8979724Z         },
2026-07-26T22:33:02.8979835Z         "impl": {
2026-07-26T22:33:02.8979944Z           "complete": true,
2026-07-26T22:33:02.8980054Z           "evidence": [
2026-07-26T22:33:02.8980150Z             {
2026-07-26T22:33:02.8980311Z               "path": "crates/spt-store/src/visibility.rs",
2026-07-26T22:33:02.8980407Z               "line": 105
2026-07-26T22:33:02.8980507Z             },
2026-07-26T22:33:02.8980607Z             {
2026-07-26T22:33:02.8980751Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8980865Z               "line": 13112
2026-07-26T22:33:02.8980965Z             },
2026-07-26T22:33:02.8981066Z             {
2026-07-26T22:33:02.8981208Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8981317Z               "line": 13244
2026-07-26T22:33:02.8981423Z             }
2026-07-26T22:33:02.8981522Z           ]
2026-07-26T22:33:02.8981627Z         },
2026-07-26T22:33:02.8981729Z         "int": {
2026-07-26T22:33:02.8981851Z           "complete": true,
2026-07-26T22:33:02.8981956Z           "evidence": [
2026-07-26T22:33:02.8982056Z             {
2026-07-26T22:33:02.8982187Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8982301Z               "line": 14168
2026-07-26T22:33:02.8982402Z             }
2026-07-26T22:33:02.8982502Z           ]
2026-07-26T22:33:02.8982606Z         },
2026-07-26T22:33:02.8982712Z         "unit": {
2026-07-26T22:33:02.8982816Z           "complete": true,
2026-07-26T22:33:02.8982935Z           "evidence": [
2026-07-26T22:33:02.8983041Z             {
2026-07-26T22:33:02.8983174Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8983289Z               "line": 14081
2026-07-26T22:33:02.8983399Z             }
2026-07-26T22:33:02.8983498Z           ]
2026-07-26T22:33:02.8983598Z         }
2026-07-26T22:33:02.8983699Z       }
2026-07-26T22:33:02.8983962Z     },
2026-07-26T22:33:02.8984103Z     {
2026-07-26T22:33:02.8984243Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-07-26T22:33:02.8985613Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-07-26T22:33:02.8985735Z       "requiredStages": [
2026-07-26T22:33:02.8985841Z         "impl",
2026-07-26T22:33:02.8985946Z         "unit"
2026-07-26T22:33:02.8986041Z       ],
2026-07-26T22:33:02.8986141Z       "stages": {
2026-07-26T22:33:02.8986361Z         "doc": {
2026-07-26T22:33:02.8986480Z           "complete": false,
2026-07-26T22:33:02.8986585Z           "evidence": []
2026-07-26T22:33:02.8986699Z         },
2026-07-26T22:33:02.8986805Z         "impl": {
2026-07-26T22:33:02.8986914Z           "complete": true,
2026-07-26T22:33:02.8987018Z           "evidence": [
2026-07-26T22:33:02.8987125Z             {
2026-07-26T22:33:02.8987262Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8987375Z               "line": 7411
2026-07-26T22:33:02.8987475Z             }
2026-07-26T22:33:02.8987574Z           ]
2026-07-26T22:33:02.8987678Z         },
2026-07-26T22:33:02.8987773Z         "int": {
2026-07-26T22:33:02.8987894Z           "complete": false,
2026-07-26T22:33:02.8988007Z           "evidence": []
2026-07-26T22:33:02.8988102Z         },
2026-07-26T22:33:02.8988203Z         "unit": {
2026-07-26T22:33:02.8988307Z           "complete": true,
2026-07-26T22:33:02.8988413Z           "evidence": [
2026-07-26T22:33:02.8988522Z             {
2026-07-26T22:33:02.8988645Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.8988766Z               "line": 14033
2026-07-26T22:33:02.8988865Z             }
2026-07-26T22:33:02.8989047Z           ]
2026-07-26T22:33:02.8989147Z         }
2026-07-26T22:33:02.8989242Z       }
2026-07-26T22:33:02.8989337Z     },
2026-07-26T22:33:02.8989434Z     {
2026-07-26T22:33:02.8989580Z       "id": "REQ-ENDPOINT-TEARDOWN-AUTHORITY",
2026-07-26T22:33:02.9001680Z       "title": "TEARDOWN-AUTHORITY W1 (ADR-0045; two hertz field RCAs 2026-07-19, doyle code-verified + ruled): ONE shared topology-aware broker-teardown primitive behind BOTH `endpoint shutdown` and `endpoint stop`. Today both verbs stamp state they never cause: cmd_shutdown (cli.rs:3979) = remove ready marker + cmd_rest(Suspend) — the Suspend edge (resting.rs daemon_rest_event_with_liveness -> apply_event -> cascade_shells_on_edge -> advertise) fires echo + shell cascade + advertise and NEVER touches a session, even though the verb already probed broker-session truth (cli.rs:3797-3804 has_live_session_honest) to force from=alive; cmd_stop (cli.rs:7071) = marker + unregister_address + terminal_normalize + advertise, whose own comment calls it a DEFINITIVE death observation it fabricates. Field: broker retains the whole subtree (adapter -> node -> harness -> nested resumed harness + MCP children; the surviving `spt api listen` is a DESCENDANT, so a direct-child kill misses it). PRIMITIVE (ordered, ADR-0045 decisions 1/6/7/9): resolve broker SessionInfo -> dedicated sid/endpoint-keyed broker kill claiming NO controller (NOT Brain::attach()+kill_session(), brain.rs:622 require_session() = controller theft under the ADR-0044 lease ladder; idempotent — unknown session is benign success) -> reap the whole DESCENDANT subtree (reuse spt_store::proc.rs kill-root+process_descendants, do not mint a second tree-walk) -> await broker-row removal under a bound -> ONLY THEN stamp + unregister + advertise. Stamp-after-reap is load-bearing: field-observed post-stop info.json read status=offline BUT rest_state=active + controlled=true because the SURVIVING host RE-BOUND after the CAS-less terminal_normalize(path, None) — no hardening of the write fixes this, only the reap makes the stamp true (shutdown passes Some(sid) for the concurrent-newer-bind CAS; stop's unconditional posture stays, it is the operator's own definitive command). TOPOLOGY SPLIT (decision 2): gated controllable==Some(true) (ADR-0041 hosting authority — the SAME predicate cmd_bind's online-earn and the livehost reconcile use); harness-hosted/external keeps marker+address+status-only behavior (CONTEXT.md:39 — core spawned nothing, holds nothing) and the misleading cmd_shutdown doc comment claiming marker-removal stops the listener is corrected to name its topology. VERB DIFFERENCES ARE ONLY ceremony + resulting intent (decision 3): shutdown = echo commune + shell cascade FIRST then teardown, result rest_state=suspended (wrap the EXISTING rest edge — apply_event already echoes before the flip per KH 3.3; do NOT reimplement the ordering); stop = NO ceremony, result terminal_normalize. TIMEOUT (decision 7): do NOT stamp cold over a survivor — exit non-zero, and because stop is the last rung with no in-band escalation behind it its failure line names the surviving ROOT PID + the scoped-kill remedy. reconcile_hosted_liveness stays the partial-failure catch-up net, not duplicated. Precedent: REQ-HAZARD-DAEMON-STOP-REAP already ruled this reap principle at DAEMON scope; this is the ENDPOINT scope it was never extended to. Gate: doc — ADR-0045 + CONTEXT.md amendments (190 record-vs-process axis, 640 verb semantics, 647 stop echo exception) + KNOWN-HAZARDS entry; impl — the shared primitive + both verb call sites + topology gate + corrected comments; unit — topology routing table (controllable=true -> teardown, harness-hosted -> marker/address/status only), verb-difference table (ceremony + resulting intent), timeout posture (no cold stamp on survivor, failure line carries root pid), REWRITE shutdown_soft_stops_and_suspends (it asserts marker+intent only = it asserts the bug); int — real broker-hosted endpoint: after each verb, no broker session row + process subtree gone INCLUDING the descendant `spt api listen` + perch ready=false/alive=false/address unregistered/unbound=false + effective and advertised state correct + (shutdown) echo/cascade ran BEFORE the kill + wake/resume works from the recorded sid under the recorded adapter.",
2026-07-26T22:33:02.9002181Z       "requiredStages": [
2026-07-26T22:33:02.9002285Z         "doc",
2026-07-26T22:33:02.9002395Z         "impl",
2026-07-26T22:33:02.9002491Z         "unit",
2026-07-26T22:33:02.9002591Z         "int"
2026-07-26T22:33:02.9002685Z       ],
2026-07-26T22:33:02.9002786Z       "stages": {
2026-07-26T22:33:02.9002887Z         "doc": {
2026-07-26T22:33:02.9003009Z           "complete": true,
2026-07-26T22:33:02.9003114Z           "evidence": [
2026-07-26T22:33:02.9003218Z             {
2026-07-26T22:33:02.9003355Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9003489Z               "line": 735
2026-07-26T22:33:02.9003589Z             },
2026-07-26T22:33:02.9003688Z             {
2026-07-26T22:33:02.9003871Z               "path": "docs/adr/0045-endpoint-teardown-authority.md",
2026-07-26T22:33:02.9003989Z               "line": 74
2026-07-26T22:33:02.9004089Z             }
2026-07-26T22:33:02.9004194Z           ]
2026-07-26T22:33:02.9004294Z         },
2026-07-26T22:33:02.9004395Z         "impl": {
2026-07-26T22:33:02.9004514Z           "complete": true,
2026-07-26T22:33:02.9004628Z           "evidence": [
2026-07-26T22:33:02.9004728Z             {
2026-07-26T22:33:02.9004881Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.9004994Z               "line": 695
2026-07-26T22:33:02.9005096Z             },
2026-07-26T22:33:02.9005195Z             {
2026-07-26T22:33:02.9005344Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9005458Z               "line": 4180
2026-07-26T22:33:02.9005572Z             },
2026-07-26T22:33:02.9005668Z             {
2026-07-26T22:33:02.9005815Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9006005Z               "line": 5952
2026-07-26T22:33:02.9006114Z             },
2026-07-26T22:33:02.9006217Z             {
2026-07-26T22:33:02.9006361Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.9006461Z               "line": 63
2026-07-26T22:33:02.9006560Z             },
2026-07-26T22:33:02.9006661Z             {
2026-07-26T22:33:02.9006800Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9006908Z               "line": 4154
2026-07-26T22:33:02.9007005Z             },
2026-07-26T22:33:02.9007104Z             {
2026-07-26T22:33:02.9007232Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9007333Z               "line": 4187
2026-07-26T22:33:02.9007433Z             },
2026-07-26T22:33:02.9007533Z             {
2026-07-26T22:33:02.9007663Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9007857Z               "line": 7332
2026-07-26T22:33:02.9007963Z             },
2026-07-26T22:33:02.9008072Z             {
2026-07-26T22:33:02.9008191Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9008302Z               "line": 7371
2026-07-26T22:33:02.9008392Z             },
2026-07-26T22:33:02.9008495Z             {
2026-07-26T22:33:02.9008614Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9008746Z               "line": 7381
2026-07-26T22:33:02.9008860Z             },
2026-07-26T22:33:02.9009047Z             {
2026-07-26T22:33:02.9009160Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9009276Z               "line": 13141
2026-07-26T22:33:02.9009376Z             },
2026-07-26T22:33:02.9009480Z             {
2026-07-26T22:33:02.9009609Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:02.9009719Z               "line": 1038
2026-07-26T22:33:02.9009818Z             },
2026-07-26T22:33:02.9009920Z             {
2026-07-26T22:33:02.9010052Z               "path": "crates/spt/src/teardown.rs",
2026-07-26T22:33:02.9010167Z               "line": 136
2026-07-26T22:33:02.9010272Z             },
2026-07-26T22:33:02.9010372Z             {
2026-07-26T22:33:02.9010506Z               "path": "crates/spt/src/teardown.rs",
2026-07-26T22:33:02.9010620Z               "line": 148
2026-07-26T22:33:02.9010719Z             },
2026-07-26T22:33:02.9010821Z             {
2026-07-26T22:33:02.9010953Z               "path": "crates/spt/src/teardown.rs",
2026-07-26T22:33:02.9011073Z               "line": 170
2026-07-26T22:33:02.9011174Z             },
2026-07-26T22:33:02.9011277Z             {
2026-07-26T22:33:02.9011405Z               "path": "crates/spt/src/teardown.rs",
2026-07-26T22:33:02.9011520Z               "line": 225
2026-07-26T22:33:02.9011620Z             },
2026-07-26T22:33:02.9011724Z             {
2026-07-26T22:33:02.9011854Z               "path": "crates/spt/src/teardown.rs",
2026-07-26T22:33:02.9011967Z               "line": 239
2026-07-26T22:33:02.9012078Z             }
2026-07-26T22:33:02.9012178Z           ]
2026-07-26T22:33:02.9012278Z         },
2026-07-26T22:33:02.9012388Z         "int": {
2026-07-26T22:33:02.9012498Z           "complete": true,
2026-07-26T22:33:02.9012611Z           "evidence": [
2026-07-26T22:33:02.9012712Z             {
2026-07-26T22:33:02.9012903Z               "path": "crates/spt/tests/endpoint_teardown_authority_e2e.rs",
2026-07-26T22:33:02.9013007Z               "line": 414
2026-07-26T22:33:02.9013114Z             },
2026-07-26T22:33:02.9013217Z             {
2026-07-26T22:33:02.9013405Z               "path": "crates/spt/tests/endpoint_teardown_authority_e2e.rs",
2026-07-26T22:33:02.9013522Z               "line": 654
2026-07-26T22:33:02.9013621Z             }
2026-07-26T22:33:02.9013727Z           ]
2026-07-26T22:33:02.9013820Z         },
2026-07-26T22:33:02.9013929Z         "unit": {
2026-07-26T22:33:02.9014044Z           "complete": true,
2026-07-26T22:33:02.9014149Z           "evidence": [
2026-07-26T22:33:02.9014253Z             {
2026-07-26T22:33:02.9014388Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9014492Z               "line": 14110
2026-07-26T22:33:02.9014707Z             },
2026-07-26T22:33:02.9014807Z             {
2026-07-26T22:33:02.9014935Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9015041Z               "line": 16853
2026-07-26T22:33:02.9015145Z             },
2026-07-26T22:33:02.9015250Z             {
2026-07-26T22:33:02.9015374Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9015483Z               "line": 16895
2026-07-26T22:33:02.9015594Z             },
2026-07-26T22:33:02.9015699Z             {
2026-07-26T22:33:02.9015822Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9015928Z               "line": 16932
2026-07-26T22:33:02.9016032Z             },
2026-07-26T22:33:02.9016132Z             {
2026-07-26T22:33:02.9016272Z               "path": "crates/spt/src/teardown.rs",
2026-07-26T22:33:02.9016493Z               "line": 263
2026-07-26T22:33:02.9016603Z             },
2026-07-26T22:33:02.9016697Z             {
2026-07-26T22:33:02.9016829Z               "path": "crates/spt/src/teardown.rs",
2026-07-26T22:33:02.9016949Z               "line": 283
2026-07-26T22:33:02.9017059Z             },
2026-07-26T22:33:02.9017148Z             {
2026-07-26T22:33:02.9017279Z               "path": "crates/spt/src/teardown.rs",
2026-07-26T22:33:02.9017383Z               "line": 321
2026-07-26T22:33:02.9017487Z             },
2026-07-26T22:33:02.9017588Z             {
2026-07-26T22:33:02.9017721Z               "path": "crates/spt/src/teardown.rs",
2026-07-26T22:33:02.9017827Z               "line": 371
2026-07-26T22:33:02.9017932Z             }
2026-07-26T22:33:02.9018032Z           ]
2026-07-26T22:33:02.9018131Z         }
2026-07-26T22:33:02.9018223Z       }
2026-07-26T22:33:02.9018322Z     },
2026-07-26T22:33:02.9018422Z     {
2026-07-26T22:33:02.9018561Z       "id": "REQ-ENDPOINT-UNBOUND-ATTACH",
2026-07-26T22:33:02.9021299Z       "title": "An spt-hosted endpoint is ATTACHABLE between spawn and bind: gate the attach on the broker SESSION being attachable (session+PTY+OutputLog exist at spawn, before bind), not on perch STATUS_ONLINE (bind). cmd_endpoint_run + `spt rc <id>` attach to a live broker session regardless of perch status (headless bringups too; lets an operator clear a bind-gating prompt) -- replaces await_endpoint_online; preserves REQ-HAZARD-RC-ATTACH-ONLINE-RACE's 'no attach before a session' intent at the earlier session-exists point; source = the broker sessions map (ADR-0025 W3a); local-only. New on-disk status STATUS_UNBOUND (spawn->unbound, bind->online, death->offline); lifecycle reuses the existing exit-waiter/reconcile (session death->offline); unbound is attachable but NOT message-addressable (messaging stays online/bound-gated). EpDisplay gains Unbound = HOLLOW (+ hollow-controlled variant) -- amber=HarnessOnly is taken + means not-controllable (the opposite of attachable). (ADR-0027)",
2026-07-26T22:33:02.9021434Z       "requiredStages": [
2026-07-26T22:33:02.9021537Z         "doc",
2026-07-26T22:33:02.9021633Z         "impl",
2026-07-26T22:33:02.9021744Z         "unit",
2026-07-26T22:33:02.9021847Z         "int"
2026-07-26T22:33:02.9021956Z       ],
2026-07-26T22:33:02.9022056Z       "stages": {
2026-07-26T22:33:02.9022157Z         "doc": {
2026-07-26T22:33:02.9022280Z           "complete": true,
2026-07-26T22:33:02.9022391Z           "evidence": [
2026-07-26T22:33:02.9022491Z             {
2026-07-26T22:33:02.9022609Z               "path": "CONTEXT.md",
2026-07-26T22:33:02.9022715Z               "line": 688
2026-07-26T22:33:02.9022815Z             },
2026-07-26T22:33:02.9022919Z             {
2026-07-26T22:33:02.9023148Z               "path": "docs/adr/0027-unbound-endpoint-state-and-attach-on-session.md",
2026-07-26T22:33:02.9023257Z               "line": 3
2026-07-26T22:33:02.9023354Z             }
2026-07-26T22:33:02.9023458Z           ]
2026-07-26T22:33:02.9023558Z         },
2026-07-26T22:33:02.9023669Z         "impl": {
2026-07-26T22:33:02.9023786Z           "complete": true,
2026-07-26T22:33:02.9023901Z           "evidence": [
2026-07-26T22:33:02.9024111Z             {
2026-07-26T22:33:02.9024267Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.9024371Z               "line": 820
2026-07-26T22:33:02.9024475Z             },
2026-07-26T22:33:02.9024570Z             {
2026-07-26T22:33:02.9024728Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.9024832Z               "line": 881
2026-07-26T22:33:02.9024943Z             },
2026-07-26T22:33:02.9025043Z             {
2026-07-26T22:33:02.9025195Z               "path": "crates/spt-store/src/liveness.rs",
2026-07-26T22:33:02.9025305Z               "line": 45
2026-07-26T22:33:02.9025414Z             },
2026-07-26T22:33:02.9025505Z             {
2026-07-26T22:33:02.9025658Z               "path": "crates/spt-store/src/liveness.rs",
2026-07-26T22:33:02.9025767Z               "line": 116
2026-07-26T22:33:02.9025958Z             },
2026-07-26T22:33:02.9026058Z             {
2026-07-26T22:33:02.9026207Z               "path": "crates/spt-store/src/liveness.rs",
2026-07-26T22:33:02.9026329Z               "line": 160
2026-07-26T22:33:02.9026425Z             },
2026-07-26T22:33:02.9026522Z             {
2026-07-26T22:33:02.9026654Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9026759Z               "line": 2724
2026-07-26T22:33:02.9026865Z             },
2026-07-26T22:33:02.9026963Z             {
2026-07-26T22:33:02.9027106Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9027211Z               "line": 2745
2026-07-26T22:33:02.9027309Z             },
2026-07-26T22:33:02.9027403Z             {
2026-07-26T22:33:02.9027538Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9027652Z               "line": 3500
2026-07-26T22:33:02.9027752Z             },
2026-07-26T22:33:02.9027848Z             {
2026-07-26T22:33:02.9028000Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:02.9028125Z               "line": 186
2026-07-26T22:33:02.9028230Z             },
2026-07-26T22:33:02.9028343Z             {
2026-07-26T22:33:02.9028487Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:02.9028610Z               "line": 231
2026-07-26T22:33:02.9028711Z             },
2026-07-26T22:33:02.9028811Z             {
2026-07-26T22:33:02.9028935Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:02.9029117Z               "line": 995
2026-07-26T22:33:02.9029211Z             },
2026-07-26T22:33:02.9029316Z             {
2026-07-26T22:33:02.9029446Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:02.9029563Z               "line": 1021
2026-07-26T22:33:02.9029649Z             },
2026-07-26T22:33:02.9029758Z             {
2026-07-26T22:33:02.9029876Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:02.9029990Z               "line": 1403
2026-07-26T22:33:02.9030091Z             }
2026-07-26T22:33:02.9030195Z           ]
2026-07-26T22:33:02.9030295Z         },
2026-07-26T22:33:02.9030396Z         "int": {
2026-07-26T22:33:02.9030510Z           "complete": true,
2026-07-26T22:33:02.9030624Z           "evidence": [
2026-07-26T22:33:02.9030725Z             {
2026-07-26T22:33:02.9030867Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:02.9030968Z               "line": 632
2026-07-26T22:33:02.9031073Z             },
2026-07-26T22:33:02.9031173Z             {
2026-07-26T22:33:02.9031355Z               "path": "crates/spt/tests/multi_subnet_bringup_e2e.rs",
2026-07-26T22:33:02.9031464Z               "line": 347
2026-07-26T22:33:02.9031563Z             }
2026-07-26T22:33:02.9031669Z           ]
2026-07-26T22:33:02.9031764Z         },
2026-07-26T22:33:02.9031859Z         "unit": {
2026-07-26T22:33:02.9031984Z           "complete": true,
2026-07-26T22:33:02.9032088Z           "evidence": [
2026-07-26T22:33:02.9032193Z             {
2026-07-26T22:33:02.9032346Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.9032473Z               "line": 1773
2026-07-26T22:33:02.9032568Z             },
2026-07-26T22:33:02.9032664Z             {
2026-07-26T22:33:02.9032921Z               "path": "crates/spt-store/src/liveness.rs",
2026-07-26T22:33:02.9033037Z               "line": 287
2026-07-26T22:33:02.9033140Z             },
2026-07-26T22:33:02.9033242Z             {
2026-07-26T22:33:02.9033389Z               "path": "crates/spt-store/src/liveness.rs",
2026-07-26T22:33:02.9033498Z               "line": 325
2026-07-26T22:33:02.9033599Z             },
2026-07-26T22:33:02.9033699Z             {
2026-07-26T22:33:02.9033832Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9033947Z               "line": 14690
2026-07-26T22:33:02.9034047Z             },
2026-07-26T22:33:02.9034147Z             {
2026-07-26T22:33:02.9034281Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9034394Z               "line": 15712
2026-07-26T22:33:02.9034501Z             },
2026-07-26T22:33:02.9034709Z             {
2026-07-26T22:33:02.9034861Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:02.9034969Z               "line": 601
2026-07-26T22:33:02.9035082Z             },
2026-07-26T22:33:02.9035178Z             {
2026-07-26T22:33:02.9035321Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:02.9035431Z               "line": 2084
2026-07-26T22:33:02.9035531Z             },
2026-07-26T22:33:02.9035631Z             {
2026-07-26T22:33:02.9035775Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:02.9035879Z               "line": 824
2026-07-26T22:33:02.9035983Z             }
2026-07-26T22:33:02.9036080Z           ]
2026-07-26T22:33:02.9036189Z         }
2026-07-26T22:33:02.9036284Z       }
2026-07-26T22:33:02.9036389Z     },
2026-07-26T22:33:02.9036490Z     {
2026-07-26T22:33:02.9036637Z       "id": "REQ-ENSURE-DAEMON-STOP-INHIBIT",
2026-07-26T22:33:02.9041494Z       "title": "An operator stop outranks every implicit daemon ensure. (ADR-0047 decision 2, AMENDING REQ-DAEMON-3's anchor; hertz v0.39.4 field bug 2, RCA accepted 2026-07-22.) TODAY: every `spt api` invocation runs unconditional ensure_daemon() (api/mod.rs run()), so on a box with live adapter sessions a `daemon stop --force` loses the race to hook-driven api calls — respawn convoy (5-10 ephemeral spawner windows), several stops to stay down; the rc-side twins were fixed earlier, the api anchor stayed armed. FIX: `daemon stop` records a durable machine-scoped STOP INHIBIT before teardown begins; ensure_daemon()/ensure_running() consult it and DECLINE with one honest line naming the remedy ('daemon stopped by operator — spt daemon start to resume'); cleared by intent verbs ONLY (explicit `daemon start`; update paths that restart by design) — NO TTL (rejected: a timeout is the surprise respawn again, later); implicit autostart additionally takes a machine-wide lock around probe-and-spawn so N concurrent callers never launch N daemons. Gate: doc — the stop/start contract on the daemon CLI docs (stop now sticks; the refusal line + remedy named); impl — inhibit mint in cmd_stop + consult in both implicit anchors + clear in daemon start/update-finish + the spawn serialization lock; unit — inhibit present -> ensure declines with the message, absent -> spawns, intent verbs clear, non-intent paths never clear; int — the convoy rig: stop under a concurrent api-call storm -> daemon stays down + zero respawns + refusal printed, then explicit start clears and exactly ONE daemon comes up under the same storm (RED-first against today's anchor).",
2026-07-26T22:33:02.9041699Z       "requiredStages": [
2026-07-26T22:33:02.9041799Z         "doc",
2026-07-26T22:33:02.9041905Z         "impl",
2026-07-26T22:33:02.9042004Z         "unit",
2026-07-26T22:33:02.9042109Z         "int"
2026-07-26T22:33:02.9042210Z       ],
2026-07-26T22:33:02.9042342Z       "stages": {
2026-07-26T22:33:02.9042448Z         "doc": {
2026-07-26T22:33:02.9042591Z           "complete": true,
2026-07-26T22:33:02.9042748Z           "evidence": [
2026-07-26T22:33:02.9042854Z             {
2026-07-26T22:33:02.9043014Z               "path": "docs-site/src/concepts/overview.md",
2026-07-26T22:33:02.9043254Z               "line": 59
2026-07-26T22:33:02.9043357Z             },
2026-07-26T22:33:02.9043458Z             {
2026-07-26T22:33:02.9043653Z               "path": "docs/adr/0047-daemon-lifecycle-custody-authority.md",
2026-07-26T22:33:02.9043763Z               "line": 79
2026-07-26T22:33:02.9043859Z             }
2026-07-26T22:33:02.9043963Z           ]
2026-07-26T22:33:02.9044063Z         },
2026-07-26T22:33:02.9044169Z         "impl": {
2026-07-26T22:33:02.9044283Z           "complete": true,
2026-07-26T22:33:02.9044392Z           "evidence": [
2026-07-26T22:33:02.9044493Z             {
2026-07-26T22:33:02.9044644Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9044756Z               "line": 514
2026-07-26T22:33:02.9044860Z             },
2026-07-26T22:33:02.9044964Z             {
2026-07-26T22:33:02.9045216Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9045330Z               "line": 545
2026-07-26T22:33:02.9045440Z             },
2026-07-26T22:33:02.9045538Z             {
2026-07-26T22:33:02.9045681Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9045782Z               "line": 552
2026-07-26T22:33:02.9045891Z             },
2026-07-26T22:33:02.9045991Z             {
2026-07-26T22:33:02.9046139Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9046243Z               "line": 642
2026-07-26T22:33:02.9046344Z             },
2026-07-26T22:33:02.9046444Z             {
2026-07-26T22:33:02.9046591Z               "path": "crates/spt-store/src/daemon_inhibit.rs",
2026-07-26T22:33:02.9046702Z               "line": 35
2026-07-26T22:33:02.9046807Z             },
2026-07-26T22:33:02.9046911Z             {
2026-07-26T22:33:02.9047060Z               "path": "crates/spt-store/src/daemon_inhibit.rs",
2026-07-26T22:33:02.9047173Z               "line": 64
2026-07-26T22:33:02.9047274Z             },
2026-07-26T22:33:02.9047384Z             {
2026-07-26T22:33:02.9047526Z               "path": "crates/spt-store/src/daemon_inhibit.rs",
2026-07-26T22:33:02.9047652Z               "line": 80
2026-07-26T22:33:02.9047755Z             },
2026-07-26T22:33:02.9047846Z             {
2026-07-26T22:33:02.9048000Z               "path": "crates/spt-store/src/daemon_inhibit.rs",
2026-07-26T22:33:02.9048117Z               "line": 90
2026-07-26T22:33:02.9048216Z             },
2026-07-26T22:33:02.9048317Z             {
2026-07-26T22:33:02.9048467Z               "path": "crates/spt-store/src/daemon_inhibit.rs",
2026-07-26T22:33:02.9048586Z               "line": 108
2026-07-26T22:33:02.9048692Z             },
2026-07-26T22:33:02.9048791Z             {
2026-07-26T22:33:02.9048921Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9049125Z               "line": 4398
2026-07-26T22:33:02.9049231Z             }
2026-07-26T22:33:02.9049340Z           ]
2026-07-26T22:33:02.9049444Z         },
2026-07-26T22:33:02.9049550Z         "int": {
2026-07-26T22:33:02.9049664Z           "complete": true,
2026-07-26T22:33:02.9049788Z           "evidence": [
2026-07-26T22:33:02.9049894Z             {
2026-07-26T22:33:02.9050064Z               "path": "crates/spt/tests/daemon_stop_convoy_e2e.rs",
2026-07-26T22:33:02.9050180Z               "line": 118
2026-07-26T22:33:02.9050284Z             }
2026-07-26T22:33:02.9050389Z           ]
2026-07-26T22:33:02.9050490Z         },
2026-07-26T22:33:02.9050594Z         "unit": {
2026-07-26T22:33:02.9050717Z           "complete": true,
2026-07-26T22:33:02.9050826Z           "evidence": [
2026-07-26T22:33:02.9050921Z             {
2026-07-26T22:33:02.9051057Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9051177Z               "line": 1367
2026-07-26T22:33:02.9051282Z             },
2026-07-26T22:33:02.9051391Z             {
2026-07-26T22:33:02.9051526Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9051644Z               "line": 1400
2026-07-26T22:33:02.9051749Z             },
2026-07-26T22:33:02.9051854Z             {
2026-07-26T22:33:02.9052132Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9052269Z               "line": 1409
2026-07-26T22:33:02.9052393Z             },
2026-07-26T22:33:02.9052512Z             {
2026-07-26T22:33:02.9052664Z               "path": "crates/spt-store/src/daemon_inhibit.rs",
2026-07-26T22:33:02.9052771Z               "line": 126
2026-07-26T22:33:02.9052884Z             },
2026-07-26T22:33:02.9052984Z             {
2026-07-26T22:33:02.9053133Z               "path": "crates/spt-store/src/daemon_inhibit.rs",
2026-07-26T22:33:02.9053241Z               "line": 145
2026-07-26T22:33:02.9053357Z             },
2026-07-26T22:33:02.9053448Z             {
2026-07-26T22:33:02.9053603Z               "path": "crates/spt-store/src/daemon_inhibit.rs",
2026-07-26T22:33:02.9053713Z               "line": 156
2026-07-26T22:33:02.9053941Z             }
2026-07-26T22:33:02.9054042Z           ]
2026-07-26T22:33:02.9054147Z         }
2026-07-26T22:33:02.9054237Z       }
2026-07-26T22:33:02.9054333Z     },
2026-07-26T22:33:02.9054438Z     {
2026-07-26T22:33:02.9054547Z       "id": "REQ-EP-1",
2026-07-26T22:33:02.9054710Z       "title": "Day-one endpoint types; open type system",
2026-07-26T22:33:02.9054834Z       "requiredStages": [
2026-07-26T22:33:02.9054938Z         "impl",
2026-07-26T22:33:02.9055044Z         "unit"
2026-07-26T22:33:02.9055143Z       ],
2026-07-26T22:33:02.9055243Z       "stages": {
2026-07-26T22:33:02.9055349Z         "doc": {
2026-07-26T22:33:02.9055467Z           "complete": false,
2026-07-26T22:33:02.9055568Z           "evidence": []
2026-07-26T22:33:02.9055674Z         },
2026-07-26T22:33:02.9055777Z         "impl": {
2026-07-26T22:33:02.9055895Z           "complete": true,
2026-07-26T22:33:02.9055995Z           "evidence": [
2026-07-26T22:33:02.9056099Z             {
2026-07-26T22:33:02.9056251Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-07-26T22:33:02.9056376Z               "line": 77
2026-07-26T22:33:02.9056474Z             },
2026-07-26T22:33:02.9056590Z             {
2026-07-26T22:33:02.9056747Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-07-26T22:33:02.9056856Z               "line": 94
2026-07-26T22:33:02.9056957Z             }
2026-07-26T22:33:02.9057066Z           ]
2026-07-26T22:33:02.9057171Z         },
2026-07-26T22:33:02.9057272Z         "int": {
2026-07-26T22:33:02.9057386Z           "complete": false,
2026-07-26T22:33:02.9057509Z           "evidence": []
2026-07-26T22:33:02.9057606Z         },
2026-07-26T22:33:02.9057720Z         "unit": {
2026-07-26T22:33:02.9057839Z           "complete": true,
2026-07-26T22:33:02.9057940Z           "evidence": [
2026-07-26T22:33:02.9058039Z             {
2026-07-26T22:33:02.9058192Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-07-26T22:33:02.9058310Z               "line": 161
2026-07-26T22:33:02.9058411Z             },
2026-07-26T22:33:02.9058512Z             {
2026-07-26T22:33:02.9058663Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-07-26T22:33:02.9058781Z               "line": 178
2026-07-26T22:33:02.9058887Z             }
2026-07-26T22:33:02.9059070Z           ]
2026-07-26T22:33:02.9059166Z         }
2026-07-26T22:33:02.9059272Z       }
2026-07-26T22:33:02.9059370Z     },
2026-07-26T22:33:02.9059476Z     {
2026-07-26T22:33:02.9059586Z       "id": "REQ-EP-2",
2026-07-26T22:33:02.9059786Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-07-26T22:33:02.9059905Z       "requiredStages": [
2026-07-26T22:33:02.9060014Z         "impl",
2026-07-26T22:33:02.9060115Z         "unit"
2026-07-26T22:33:02.9060214Z       ],
2026-07-26T22:33:02.9060324Z       "stages": {
2026-07-26T22:33:02.9060425Z         "doc": {
2026-07-26T22:33:02.9060543Z           "complete": false,
2026-07-26T22:33:02.9060663Z           "evidence": []
2026-07-26T22:33:02.9060759Z         },
2026-07-26T22:33:02.9060867Z         "impl": {
2026-07-26T22:33:02.9060982Z           "complete": true,
2026-07-26T22:33:02.9061103Z           "evidence": [
2026-07-26T22:33:02.9061309Z             {
2026-07-26T22:33:02.9061472Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-07-26T22:33:02.9061589Z               "line": 114
2026-07-26T22:33:02.9061685Z             },
2026-07-26T22:33:02.9061785Z             {
2026-07-26T22:33:02.9061937Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-07-26T22:33:02.9062053Z               "line": 131
2026-07-26T22:33:02.9062157Z             },
2026-07-26T22:33:02.9062252Z             {
2026-07-26T22:33:02.9062396Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-07-26T22:33:02.9062505Z               "line": 138
2026-07-26T22:33:02.9062609Z             }
2026-07-26T22:33:02.9062711Z           ]
2026-07-26T22:33:02.9062810Z         },
2026-07-26T22:33:02.9062914Z         "int": {
2026-07-26T22:33:02.9063039Z           "complete": false,
2026-07-26T22:33:02.9063258Z           "evidence": []
2026-07-26T22:33:02.9063359Z         },
2026-07-26T22:33:02.9063463Z         "unit": {
2026-07-26T22:33:02.9063598Z           "complete": true,
2026-07-26T22:33:02.9063702Z           "evidence": [
2026-07-26T22:33:02.9063811Z             {
2026-07-26T22:33:02.9063956Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-07-26T22:33:02.9064068Z               "line": 190
2026-07-26T22:33:02.9064167Z             },
2026-07-26T22:33:02.9064268Z             {
2026-07-26T22:33:02.9064435Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-07-26T22:33:02.9064559Z               "line": 208
2026-07-26T22:33:02.9064665Z             },
2026-07-26T22:33:02.9064764Z             {
2026-07-26T22:33:02.9064908Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-07-26T22:33:02.9065022Z               "line": 221
2026-07-26T22:33:02.9065121Z             }
2026-07-26T22:33:02.9065212Z           ]
2026-07-26T22:33:02.9065337Z         }
2026-07-26T22:33:02.9065479Z       }
2026-07-26T22:33:02.9065585Z     },
2026-07-26T22:33:02.9065689Z     {
2026-07-26T22:33:02.9065793Z       "id": "REQ-EP-3",
2026-07-26T22:33:02.9066066Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-07-26T22:33:02.9066201Z       "requiredStages": [
2026-07-26T22:33:02.9066294Z         "impl",
2026-07-26T22:33:02.9066393Z         "unit"
2026-07-26T22:33:02.9066498Z       ],
2026-07-26T22:33:02.9066612Z       "stages": {
2026-07-26T22:33:02.9066706Z         "doc": {
2026-07-26T22:33:02.9066830Z           "complete": false,
2026-07-26T22:33:02.9066946Z           "evidence": []
2026-07-26T22:33:02.9067044Z         },
2026-07-26T22:33:02.9067145Z         "impl": {
2026-07-26T22:33:02.9067264Z           "complete": true,
2026-07-26T22:33:02.9067368Z           "evidence": [
2026-07-26T22:33:02.9067470Z             {
2026-07-26T22:33:02.9067622Z               "path": "crates/spt-proto/src/payload.rs",
2026-07-26T22:33:02.9067731Z               "line": 31
2026-07-26T22:33:02.9067846Z             },
2026-07-26T22:33:02.9067955Z             {
2026-07-26T22:33:02.9068099Z               "path": "crates/spt-proto/src/payload.rs",
2026-07-26T22:33:02.9068213Z               "line": 49
2026-07-26T22:33:02.9068313Z             }
2026-07-26T22:33:02.9068409Z           ]
2026-07-26T22:33:02.9068509Z         },
2026-07-26T22:33:02.9068614Z         "int": {
2026-07-26T22:33:02.9068724Z           "complete": false,
2026-07-26T22:33:02.9068838Z           "evidence": []
2026-07-26T22:33:02.9069029Z         },
2026-07-26T22:33:02.9069139Z         "unit": {
2026-07-26T22:33:02.9069261Z           "complete": true,
2026-07-26T22:33:02.9069380Z           "evidence": [
2026-07-26T22:33:02.9069503Z             {
2026-07-26T22:33:02.9069658Z               "path": "crates/spt-proto/src/payload.rs",
2026-07-26T22:33:02.9069765Z               "line": 156
2026-07-26T22:33:02.9069869Z             },
2026-07-26T22:33:02.9069964Z             {
2026-07-26T22:33:02.9070112Z               "path": "crates/spt-proto/src/payload.rs",
2026-07-26T22:33:02.9070216Z               "line": 164
2026-07-26T22:33:02.9070327Z             },
2026-07-26T22:33:02.9070541Z             {
2026-07-26T22:33:02.9070690Z               "path": "crates/spt-proto/src/payload.rs",
2026-07-26T22:33:02.9070808Z               "line": 177
2026-07-26T22:33:02.9070908Z             },
2026-07-26T22:33:02.9071005Z             {
2026-07-26T22:33:02.9071151Z               "path": "crates/spt-proto/src/payload.rs",
2026-07-26T22:33:02.9071261Z               "line": 200
2026-07-26T22:33:02.9071362Z             },
2026-07-26T22:33:02.9071461Z             {
2026-07-26T22:33:02.9071596Z               "path": "crates/spt-proto/src/payload.rs",
2026-07-26T22:33:02.9071719Z               "line": 216
2026-07-26T22:33:02.9071823Z             },
2026-07-26T22:33:02.9071923Z             {
2026-07-26T22:33:02.9072078Z               "path": "crates/spt-proto/src/payload.rs",
2026-07-26T22:33:02.9072201Z               "line": 233
2026-07-26T22:33:02.9072416Z             }
2026-07-26T22:33:02.9072530Z           ]
2026-07-26T22:33:02.9072632Z         }
2026-07-26T22:33:02.9072741Z       }
2026-07-26T22:33:02.9072854Z     },
2026-07-26T22:33:02.9076992Z     {
2026-07-26T22:33:02.9077163Z       "id": "REQ-EP-4",
2026-07-26T22:33:02.9077371Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-07-26T22:33:02.9077496Z       "requiredStages": [
2026-07-26T22:33:02.9077613Z         "impl",
2026-07-26T22:33:02.9077710Z         "unit"
2026-07-26T22:33:02.9077824Z       ],
2026-07-26T22:33:02.9077933Z       "stages": {
2026-07-26T22:33:02.9078044Z         "doc": {
2026-07-26T22:33:02.9078168Z           "complete": false,
2026-07-26T22:33:02.9078286Z           "evidence": []
2026-07-26T22:33:02.9078382Z         },
2026-07-26T22:33:02.9078487Z         "impl": {
2026-07-26T22:33:02.9078606Z           "complete": true,
2026-07-26T22:33:02.9078721Z           "evidence": [
2026-07-26T22:33:02.9078821Z             {
2026-07-26T22:33:02.9079083Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.9079211Z               "line": 1011
2026-07-26T22:33:02.9079304Z             },
2026-07-26T22:33:02.9079421Z             {
2026-07-26T22:33:02.9079565Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.9079680Z               "line": 1836
2026-07-26T22:33:02.9079779Z             },
2026-07-26T22:33:02.9079878Z             {
2026-07-26T22:33:02.9080035Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9080147Z               "line": 5898
2026-07-26T22:33:02.9080243Z             },
2026-07-26T22:33:02.9080344Z             {
2026-07-26T22:33:02.9080490Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.9080591Z               "line": 206
2026-07-26T22:33:02.9080696Z             },
2026-07-26T22:33:02.9080800Z             {
2026-07-26T22:33:02.9080940Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.9081059Z               "line": 1166
2026-07-26T22:33:02.9081173Z             },
2026-07-26T22:33:02.9081283Z             {
2026-07-26T22:33:02.9081425Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.9081541Z               "line": 1357
2026-07-26T22:33:02.9081650Z             },
2026-07-26T22:33:02.9081759Z             {
2026-07-26T22:33:02.9081908Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.9082011Z               "line": 636
2026-07-26T22:33:02.9082136Z             },
2026-07-26T22:33:02.9082266Z             {
2026-07-26T22:33:02.9082407Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.9082516Z               "line": 998
2026-07-26T22:33:02.9082611Z             },
2026-07-26T22:33:02.9082714Z             {
2026-07-26T22:33:02.9082857Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.9082972Z               "line": 2161
2026-07-26T22:33:02.9083076Z             }
2026-07-26T22:33:02.9083187Z           ]
2026-07-26T22:33:02.9083287Z         },
2026-07-26T22:33:02.9083405Z         "int": {
2026-07-26T22:33:02.9083526Z           "complete": false,
2026-07-26T22:33:02.9083644Z           "evidence": []
2026-07-26T22:33:02.9083906Z         },
2026-07-26T22:33:02.9084025Z         "unit": {
2026-07-26T22:33:02.9084141Z           "complete": true,
2026-07-26T22:33:02.9084255Z           "evidence": [
2026-07-26T22:33:02.9084355Z             {
2026-07-26T22:33:02.9084503Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.9084607Z               "line": 1525
2026-07-26T22:33:02.9084703Z             },
2026-07-26T22:33:02.9084804Z             {
2026-07-26T22:33:02.9084965Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-07-26T22:33:02.9085076Z               "line": 76
2026-07-26T22:33:02.9085179Z             },
2026-07-26T22:33:02.9085279Z             {
2026-07-26T22:33:02.9085427Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-07-26T22:33:02.9085531Z               "line": 147
2026-07-26T22:33:02.9085742Z             }
2026-07-26T22:33:02.9085842Z           ]
2026-07-26T22:33:02.9085946Z         }
2026-07-26T22:33:02.9086047Z       }
2026-07-26T22:33:02.9086166Z     },
2026-07-26T22:33:02.9086265Z     {
2026-07-26T22:33:02.9086390Z       "id": "REQ-EP-5",
2026-07-26T22:33:02.9087081Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-07-26T22:33:02.9087195Z       "requiredStages": [
2026-07-26T22:33:02.9087296Z         "impl",
2026-07-26T22:33:02.9087401Z         "unit",
2026-07-26T22:33:02.9087500Z         "int"
2026-07-26T22:33:02.9087604Z       ],
2026-07-26T22:33:02.9087713Z       "stages": {
2026-07-26T22:33:02.9087822Z         "doc": {
2026-07-26T22:33:02.9087950Z           "complete": false,
2026-07-26T22:33:02.9088061Z           "evidence": []
2026-07-26T22:33:02.9088169Z         },
2026-07-26T22:33:02.9088284Z         "impl": {
2026-07-26T22:33:02.9088408Z           "complete": true,
2026-07-26T22:33:02.9088517Z           "evidence": [
2026-07-26T22:33:02.9088623Z             {
2026-07-26T22:33:02.9088780Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:02.9088890Z               "line": 488
2026-07-26T22:33:02.9089075Z             },
2026-07-26T22:33:02.9089176Z             {
2026-07-26T22:33:02.9089323Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-07-26T22:33:02.9089438Z               "line": 18
2026-07-26T22:33:02.9089534Z             },
2026-07-26T22:33:02.9089638Z             {
2026-07-26T22:33:02.9089781Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-07-26T22:33:02.9089887Z               "line": 63
2026-07-26T22:33:02.9089986Z             },
2026-07-26T22:33:02.9090087Z             {
2026-07-26T22:33:02.9090230Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-07-26T22:33:02.9090339Z               "line": 106
2026-07-26T22:33:02.9090438Z             },
2026-07-26T22:33:02.9090543Z             {
2026-07-26T22:33:02.9090689Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-07-26T22:33:02.9090808Z               "line": 181
2026-07-26T22:33:02.9090909Z             },
2026-07-26T22:33:02.9091008Z             {
2026-07-26T22:33:02.9091157Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-07-26T22:33:02.9091271Z               "line": 193
2026-07-26T22:33:02.9091374Z             },
2026-07-26T22:33:02.9091485Z             {
2026-07-26T22:33:02.9091633Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:02.9091742Z               "line": 114
2026-07-26T22:33:02.9091848Z             },
2026-07-26T22:33:02.9091948Z             {
2026-07-26T22:33:02.9092096Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:02.9092205Z               "line": 22
2026-07-26T22:33:02.9092314Z             },
2026-07-26T22:33:02.9092411Z             {
2026-07-26T22:33:02.9092567Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:02.9092672Z               "line": 210
2026-07-26T22:33:02.9092910Z             },
2026-07-26T22:33:02.9093009Z             {
2026-07-26T22:33:02.9093152Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:02.9093265Z               "line": 239
2026-07-26T22:33:02.9093360Z             },
2026-07-26T22:33:02.9093456Z             {
2026-07-26T22:33:02.9093603Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:02.9093699Z               "line": 261
2026-07-26T22:33:02.9093804Z             },
2026-07-26T22:33:02.9093903Z             {
2026-07-26T22:33:02.9094043Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:02.9094147Z               "line": 286
2026-07-26T22:33:02.9094251Z             },
2026-07-26T22:33:02.9094348Z             {
2026-07-26T22:33:02.9094500Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:02.9094716Z               "line": 312
2026-07-26T22:33:02.9094820Z             },
2026-07-26T22:33:02.9094920Z             {
2026-07-26T22:33:02.9095063Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:02.9095186Z               "line": 335
2026-07-26T22:33:02.9095293Z             },
2026-07-26T22:33:02.9095392Z             {
2026-07-26T22:33:02.9095544Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.9095660Z               "line": 166
2026-07-26T22:33:02.9095763Z             },
2026-07-26T22:33:02.9095862Z             {
2026-07-26T22:33:02.9095987Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9096101Z               "line": 11828
2026-07-26T22:33:02.9096205Z             },
2026-07-26T22:33:02.9096307Z             {
2026-07-26T22:33:02.9096430Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9096534Z               "line": 11984
2026-07-26T22:33:02.9096641Z             },
2026-07-26T22:33:02.9096745Z             {
2026-07-26T22:33:02.9096874Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9096993Z               "line": 12150
2026-07-26T22:33:02.9097097Z             },
2026-07-26T22:33:02.9097208Z             {
2026-07-26T22:33:02.9097336Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9097450Z               "line": 12708
2026-07-26T22:33:02.9097552Z             }
2026-07-26T22:33:02.9097655Z           ]
2026-07-26T22:33:02.9097760Z         },
2026-07-26T22:33:02.9097856Z         "int": {
2026-07-26T22:33:02.9097961Z           "complete": true,
2026-07-26T22:33:02.9098079Z           "evidence": [
2026-07-26T22:33:02.9098174Z             {
2026-07-26T22:33:02.9098334Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-07-26T22:33:02.9098433Z               "line": 16
2026-07-26T22:33:02.9098535Z             },
2026-07-26T22:33:02.9098635Z             {
2026-07-26T22:33:02.9098782Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-07-26T22:33:02.9098888Z               "line": 15
2026-07-26T22:33:02.9099072Z             }
2026-07-26T22:33:02.9099174Z           ]
2026-07-26T22:33:02.9099283Z         },
2026-07-26T22:33:02.9099383Z         "unit": {
2026-07-26T22:33:02.9099508Z           "complete": true,
2026-07-26T22:33:02.9099612Z           "evidence": [
2026-07-26T22:33:02.9099716Z             {
2026-07-26T22:33:02.9099855Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-07-26T22:33:02.9099974Z               "line": 260
2026-07-26T22:33:02.9100070Z             },
2026-07-26T22:33:02.9100170Z             {
2026-07-26T22:33:02.9100317Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-07-26T22:33:02.9100424Z               "line": 364
2026-07-26T22:33:02.9100518Z             },
2026-07-26T22:33:02.9100618Z             {
2026-07-26T22:33:02.9100763Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-07-26T22:33:02.9100880Z               "line": 427
2026-07-26T22:33:02.9100979Z             },
2026-07-26T22:33:02.9101084Z             {
2026-07-26T22:33:02.9101230Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:02.9101349Z               "line": 435
2026-07-26T22:33:02.9101554Z             },
2026-07-26T22:33:02.9101654Z             {
2026-07-26T22:33:02.9101812Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:02.9101916Z               "line": 487
2026-07-26T22:33:02.9102022Z             },
2026-07-26T22:33:02.9102122Z             {
2026-07-26T22:33:02.9102268Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.9102384Z               "line": 1337
2026-07-26T22:33:02.9102483Z             },
2026-07-26T22:33:02.9102583Z             {
2026-07-26T22:33:02.9102718Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9102822Z               "line": 16451
2026-07-26T22:33:02.9102922Z             },
2026-07-26T22:33:02.9103023Z             {
2026-07-26T22:33:02.9103155Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9103257Z               "line": 16604
2026-07-26T22:33:02.9103451Z             },
2026-07-26T22:33:02.9103555Z             {
2026-07-26T22:33:02.9103689Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9103806Z               "line": 17311
2026-07-26T22:33:02.9103910Z             },
2026-07-26T22:33:02.9104007Z             {
2026-07-26T22:33:02.9104135Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9104239Z               "line": 17427
2026-07-26T22:33:02.9104345Z             }
2026-07-26T22:33:02.9104450Z           ]
2026-07-26T22:33:02.9104545Z         }
2026-07-26T22:33:02.9104646Z       }
2026-07-26T22:33:02.9104746Z     },
2026-07-26T22:33:02.9104845Z     {
2026-07-26T22:33:02.9104961Z       "id": "REQ-EP-6",
2026-07-26T22:33:02.9106518Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-07-26T22:33:02.9106680Z       "requiredStages": [
2026-07-26T22:33:02.9106770Z         "doc",
2026-07-26T22:33:02.9106877Z         "impl",
2026-07-26T22:33:02.9106981Z         "unit"
2026-07-26T22:33:02.9107085Z       ],
2026-07-26T22:33:02.9107191Z       "stages": {
2026-07-26T22:33:02.9107296Z         "doc": {
2026-07-26T22:33:02.9107419Z           "complete": true,
2026-07-26T22:33:02.9107525Z           "evidence": [
2026-07-26T22:33:02.9107634Z             {
2026-07-26T22:33:02.9107763Z               "path": "CONTEXT.md",
2026-07-26T22:33:02.9107882Z               "line": 257
2026-07-26T22:33:02.9107986Z             }
2026-07-26T22:33:02.9108093Z           ]
2026-07-26T22:33:02.9108183Z         },
2026-07-26T22:33:02.9108292Z         "impl": {
2026-07-26T22:33:02.9108402Z           "complete": true,
2026-07-26T22:33:02.9108521Z           "evidence": [
2026-07-26T22:33:02.9108625Z             {
2026-07-26T22:33:02.9108777Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9108880Z               "line": 430
2026-07-26T22:33:02.9109065Z             }
2026-07-26T22:33:02.9109162Z           ]
2026-07-26T22:33:02.9109270Z         },
2026-07-26T22:33:02.9109371Z         "int": {
2026-07-26T22:33:02.9109495Z           "complete": true,
2026-07-26T22:33:02.9109604Z           "evidence": [
2026-07-26T22:33:02.9109710Z             {
2026-07-26T22:33:02.9109848Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-07-26T22:33:02.9109957Z               "line": 18
2026-07-26T22:33:02.9110054Z             }
2026-07-26T22:33:02.9110158Z           ]
2026-07-26T22:33:02.9110257Z         },
2026-07-26T22:33:02.9110364Z         "unit": {
2026-07-26T22:33:02.9110477Z           "complete": true,
2026-07-26T22:33:02.9110596Z           "evidence": [
2026-07-26T22:33:02.9110703Z             {
2026-07-26T22:33:02.9110859Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:02.9110960Z               "line": 629
2026-07-26T22:33:02.9111197Z             },
2026-07-26T22:33:02.9111298Z             {
2026-07-26T22:33:02.9111444Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9111548Z               "line": 1814
2026-07-26T22:33:02.9111649Z             }
2026-07-26T22:33:02.9111747Z           ]
2026-07-26T22:33:02.9111851Z         }
2026-07-26T22:33:02.9111952Z       }
2026-07-26T22:33:02.9112057Z     },
2026-07-26T22:33:02.9112152Z     {
2026-07-26T22:33:02.9112272Z       "id": "REQ-EP-7",
2026-07-26T22:33:02.9113960Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-07-26T22:33:02.9114206Z       "requiredStages": [
2026-07-26T22:33:02.9114310Z         "doc",
2026-07-26T22:33:02.9114413Z         "impl",
2026-07-26T22:33:02.9114514Z         "unit"
2026-07-26T22:33:02.9114615Z       ],
2026-07-26T22:33:02.9114714Z       "stages": {
2026-07-26T22:33:02.9114814Z         "doc": {
2026-07-26T22:33:02.9114929Z           "complete": true,
2026-07-26T22:33:02.9115024Z           "evidence": [
2026-07-26T22:33:02.9115129Z             {
2026-07-26T22:33:02.9115239Z               "path": "CONTEXT.md",
2026-07-26T22:33:02.9115343Z               "line": 559
2026-07-26T22:33:02.9115444Z             }
2026-07-26T22:33:02.9115549Z           ]
2026-07-26T22:33:02.9115644Z         },
2026-07-26T22:33:02.9115749Z         "impl": {
2026-07-26T22:33:02.9115883Z           "complete": true,
2026-07-26T22:33:02.9115992Z           "evidence": [
2026-07-26T22:33:02.9116093Z             {
2026-07-26T22:33:02.9116244Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:02.9116359Z               "line": 556
2026-07-26T22:33:02.9116465Z             },
2026-07-26T22:33:02.9116564Z             {
2026-07-26T22:33:02.9116713Z               "path": "crates/spt-live/src/resume.rs",
2026-07-26T22:33:02.9116813Z               "line": 56
2026-07-26T22:33:02.9116916Z             },
2026-07-26T22:33:02.9117016Z             {
2026-07-26T22:33:02.9117180Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:02.9117278Z               "line": 81
2026-07-26T22:33:02.9117379Z             },
2026-07-26T22:33:02.9117479Z             {
2026-07-26T22:33:02.9117645Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:02.9117756Z               "line": 185
2026-07-26T22:33:02.9117861Z             },
2026-07-26T22:33:02.9117970Z             {
2026-07-26T22:33:02.9118113Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9118227Z               "line": 2965
2026-07-26T22:33:02.9118338Z             }
2026-07-26T22:33:02.9118438Z           ]
2026-07-26T22:33:02.9118528Z         },
2026-07-26T22:33:02.9118638Z         "int": {
2026-07-26T22:33:02.9118762Z           "complete": false,
2026-07-26T22:33:02.9118880Z           "evidence": []
2026-07-26T22:33:02.9119072Z         },
2026-07-26T22:33:02.9119185Z         "unit": {
2026-07-26T22:33:02.9119299Z           "complete": true,
2026-07-26T22:33:02.9119417Z           "evidence": [
2026-07-26T22:33:02.9119516Z             {
2026-07-26T22:33:02.9119664Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:02.9119765Z               "line": 674
2026-07-26T22:33:02.9119864Z             },
2026-07-26T22:33:02.9119969Z             {
2026-07-26T22:33:02.9120112Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:02.9120226Z               "line": 370
2026-07-26T22:33:02.9120341Z             },
2026-07-26T22:33:02.9120441Z             {
2026-07-26T22:33:02.9120590Z               "path": "crates/spt-live/src/resume.rs",
2026-07-26T22:33:02.9120808Z               "line": 166
2026-07-26T22:33:02.9120914Z             },
2026-07-26T22:33:02.9121013Z             {
2026-07-26T22:33:02.9121147Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9121258Z               "line": 15162
2026-07-26T22:33:02.9121370Z             },
2026-07-26T22:33:02.9121476Z             {
2026-07-26T22:33:02.9121610Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9121724Z               "line": 15189
2026-07-26T22:33:02.9121830Z             }
2026-07-26T22:33:02.9121930Z           ]
2026-07-26T22:33:02.9122038Z         }
2026-07-26T22:33:02.9122137Z       }
2026-07-26T22:33:02.9122238Z     },
2026-07-26T22:33:02.9122340Z     {
2026-07-26T22:33:02.9122454Z       "id": "REQ-EP-8",
2026-07-26T22:33:02.9125379Z       "title": "AlwaysOnEndpoint: a resident, addressable, mindless endpoint whose adapter binary the daemon supervises continuously — register-triggered by an adapter-option's `[always-on]` manifest section, one supervised binary per `<adapter>[:profile]`, running independent of agent liveness. It self-manages its `#`-addressed channel endpoints via the existing `api bind` (one connection fronts many). The SECOND class of spt-core-boot-launched third-party binary (after the shell wake-watcher); supervision reuses the wake-watcher scaffolding (backoff / give-up latch / one-per-instance lock / orphan-kill / brain-side reconcile) MINUS the offline-only flip — always online, never resting (no dormant/suspended states). Two-way: agents message it; it may call `endpoint wake <id>`, target-side authorized (REQ-INST-3/6 wake resolution + access whitelist + shell_wake_spawn_anywhere — no caller-ownership gate). First consumer downstream: spt-discord.",
2026-07-26T22:33:02.9125636Z       "requiredStages": [],
2026-07-26T22:33:02.9125761Z       "stages": {
2026-07-26T22:33:02.9125856Z         "doc": {
2026-07-26T22:33:02.9125980Z           "complete": true,
2026-07-26T22:33:02.9126104Z           "evidence": [
2026-07-26T22:33:02.9126204Z             {
2026-07-26T22:33:02.9126514Z               "path": "docs/adr/0023-always-on-endpoints-resident-supervised-binary-sigil-addressing.md",
2026-07-26T22:33:02.9126629Z               "line": 5
2026-07-26T22:33:02.9126720Z             }
2026-07-26T22:33:02.9126828Z           ]
2026-07-26T22:33:02.9126924Z         },
2026-07-26T22:33:02.9127030Z         "impl": {
2026-07-26T22:33:02.9127143Z           "complete": false,
2026-07-26T22:33:02.9127259Z           "evidence": []
2026-07-26T22:33:02.9127359Z         },
2026-07-26T22:33:02.9127467Z         "int": {
2026-07-26T22:33:02.9127581Z           "complete": false,
2026-07-26T22:33:02.9127696Z           "evidence": []
2026-07-26T22:33:02.9127796Z         },
2026-07-26T22:33:02.9127905Z         "unit": {
2026-07-26T22:33:02.9128021Z           "complete": false,
2026-07-26T22:33:02.9128143Z           "evidence": []
2026-07-26T22:33:02.9128239Z         }
2026-07-26T22:33:02.9128335Z       }
2026-07-26T22:33:02.9128449Z     },
2026-07-26T22:33:02.9128549Z     {
2026-07-26T22:33:02.9128669Z       "id": "REQ-EP-9",
2026-07-26T22:33:02.9130367Z       "title": "`#` always-on address sigil: a reserved LEADING sigil marking an AlwaysOnEndpoint, extending the REQ-INST-10 grammar to `[subnet:]#id[@node]`. Mandatory + bijective — `#name` ⟺ always-on endpoint, bare `name` ⟺ agent endpoint — so the router resolves endpoint class from the address alone, before any registry lookup. Sits ABOVE REQ-HAZARD-ID-CHARSET: the address parser strips the single leading `#` before id validation, so the bare/stored id stays charset-clean and a mid-id `#` remains rejected (the charset contract is unchanged).",
2026-07-26T22:33:02.9130501Z       "requiredStages": [],
2026-07-26T22:33:02.9130606Z       "stages": {
2026-07-26T22:33:02.9130705Z         "doc": {
2026-07-26T22:33:02.9130835Z           "complete": true,
2026-07-26T22:33:02.9130944Z           "evidence": [
2026-07-26T22:33:02.9131048Z             {
2026-07-26T22:33:02.9131673Z               "path": "docs/adr/0023-always-on-endpoints-resident-supervised-binary-sigil-addressing.md",
2026-07-26T22:33:02.9131784Z               "line": 5
2026-07-26T22:33:02.9131888Z             }
2026-07-26T22:33:02.9131988Z           ]
2026-07-26T22:33:02.9132090Z         },
2026-07-26T22:33:02.9132194Z         "impl": {
2026-07-26T22:33:02.9132317Z           "complete": false,
2026-07-26T22:33:02.9132418Z           "evidence": []
2026-07-26T22:33:02.9132518Z         },
2026-07-26T22:33:02.9132622Z         "int": {
2026-07-26T22:33:02.9132740Z           "complete": false,
2026-07-26T22:33:02.9132845Z           "evidence": []
2026-07-26T22:33:02.9132953Z         },
2026-07-26T22:33:02.9133053Z         "unit": {
2026-07-26T22:33:02.9133173Z           "complete": false,
2026-07-26T22:33:02.9133277Z           "evidence": []
2026-07-26T22:33:02.9133487Z         }
2026-07-26T22:33:02.9133591Z       }
2026-07-26T22:33:02.9133692Z     },
2026-07-26T22:33:02.9133792Z     {
2026-07-26T22:33:02.9133911Z       "id": "REQ-FRONT-1",
2026-07-26T22:33:02.9134135Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-07-26T22:33:02.9134255Z       "requiredStages": [],
2026-07-26T22:33:02.9134366Z       "stages": {
2026-07-26T22:33:02.9134469Z         "doc": {
2026-07-26T22:33:02.9134588Z           "complete": false,
2026-07-26T22:33:02.9134690Z           "evidence": []
2026-07-26T22:33:02.9134793Z         },
2026-07-26T22:33:02.9134894Z         "impl": {
2026-07-26T22:33:02.9135024Z           "complete": false,
2026-07-26T22:33:02.9135127Z           "evidence": []
2026-07-26T22:33:02.9135230Z         },
2026-07-26T22:33:02.9135331Z         "int": {
2026-07-26T22:33:02.9135453Z           "complete": false,
2026-07-26T22:33:02.9135562Z           "evidence": []
2026-07-26T22:33:02.9135663Z         },
2026-07-26T22:33:02.9135768Z         "unit": {
2026-07-26T22:33:02.9135891Z           "complete": false,
2026-07-26T22:33:02.9135997Z           "evidence": []
2026-07-26T22:33:02.9136106Z         }
2026-07-26T22:33:02.9136206Z       }
2026-07-26T22:33:02.9136307Z     },
2026-07-26T22:33:02.9136402Z     {
2026-07-26T22:33:02.9136555Z       "id": "REQ-GOSSIP-ADAPTER-PROJECTS",
2026-07-26T22:33:02.9139181Z       "title": "#4: remote endpoint details (harness + project history) are gossiped, not faked. Today from_resource_row (crates/spt/src/picker/model.rs:340) hardcodes project_history=Vec::new() for every remote row and passes adapter_profile=row.resources (the blurb masquerading as the harness), and Instance/ResourceRow (crates/spt-net/src/net/registry.rs:457) carry no adapter field and no project list. Fix: additive gossip fields N-1-safe exactly like endpoint_type — Instance.adapter (composite <adapter>[:profile]) + Instance.recent_projects (bounded, newest-first, project IDs only) -> thread to ResourceRow -> from_resource_row stops faking. Pre-field remote rows render '-'. Project IDs only + REQ-PICKER-PROJECT-HISTORY-TRUTH's disambiguation. See docs/NEXT-MILESTONE-PICKER-TRIAGE.md #4.",
2026-07-26T22:33:02.9139361Z       "requiredStages": [
2026-07-26T22:33:02.9139473Z         "impl",
2026-07-26T22:33:02.9139577Z         "unit",
2026-07-26T22:33:02.9139686Z         "int"
2026-07-26T22:33:02.9139788Z       ],
2026-07-26T22:33:02.9139887Z       "stages": {
2026-07-26T22:33:02.9139982Z         "doc": {
2026-07-26T22:33:02.9140102Z           "complete": false,
2026-07-26T22:33:02.9140202Z           "evidence": []
2026-07-26T22:33:02.9140305Z         },
2026-07-26T22:33:02.9140424Z         "impl": {
2026-07-26T22:33:02.9140552Z           "complete": true,
2026-07-26T22:33:02.9140646Z           "evidence": [
2026-07-26T22:33:02.9140746Z             {
2026-07-26T22:33:02.9140908Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:02.9141027Z               "line": 584
2026-07-26T22:33:02.9141128Z             },
2026-07-26T22:33:02.9141237Z             {
2026-07-26T22:33:02.9141395Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:02.9141504Z               "line": 619
2026-07-26T22:33:02.9141715Z             },
2026-07-26T22:33:02.9141819Z             {
2026-07-26T22:33:02.9141985Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:02.9142096Z               "line": 990
2026-07-26T22:33:02.9142205Z             },
2026-07-26T22:33:02.9142310Z             {
2026-07-26T22:33:02.9142467Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:02.9142577Z               "line": 201
2026-07-26T22:33:02.9142678Z             },
2026-07-26T22:33:02.9142777Z             {
2026-07-26T22:33:02.9142921Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:02.9143036Z               "line": 210
2026-07-26T22:33:02.9143129Z             },
2026-07-26T22:33:02.9143224Z             {
2026-07-26T22:33:02.9143377Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:02.9143594Z               "line": 225
2026-07-26T22:33:02.9143695Z             },
2026-07-26T22:33:02.9143794Z             {
2026-07-26T22:33:02.9143972Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:02.9144081Z               "line": 534
2026-07-26T22:33:02.9144180Z             },
2026-07-26T22:33:02.9144277Z             {
2026-07-26T22:33:02.9144424Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:02.9144528Z               "line": 539
2026-07-26T22:33:02.9144630Z             },
2026-07-26T22:33:02.9144734Z             {
2026-07-26T22:33:02.9144877Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:02.9144982Z               "line": 544
2026-07-26T22:33:02.9145086Z             },
2026-07-26T22:33:02.9145187Z             {
2026-07-26T22:33:02.9145334Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:02.9145444Z               "line": 612
2026-07-26T22:33:02.9145565Z             },
2026-07-26T22:33:02.9145668Z             {
2026-07-26T22:33:02.9145819Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:02.9145934Z               "line": 600
2026-07-26T22:33:02.9146032Z             },
2026-07-26T22:33:02.9146136Z             {
2026-07-26T22:33:02.9146286Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:02.9146389Z               "line": 604
2026-07-26T22:33:02.9146485Z             },
2026-07-26T22:33:02.9146586Z             {
2026-07-26T22:33:02.9146733Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:02.9146849Z               "line": 617
2026-07-26T22:33:02.9146943Z             }
2026-07-26T22:33:02.9147047Z           ]
2026-07-26T22:33:02.9147163Z         },
2026-07-26T22:33:02.9147281Z         "int": {
2026-07-26T22:33:02.9147395Z           "complete": true,
2026-07-26T22:33:02.9147520Z           "evidence": [
2026-07-26T22:33:02.9147620Z             {
2026-07-26T22:33:02.9147768Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:02.9147887Z               "line": 835
2026-07-26T22:33:02.9148001Z             }
2026-07-26T22:33:02.9148093Z           ]
2026-07-26T22:33:02.9148197Z         },
2026-07-26T22:33:02.9148302Z         "unit": {
2026-07-26T22:33:02.9148432Z           "complete": true,
2026-07-26T22:33:02.9148540Z           "evidence": [
2026-07-26T22:33:02.9148648Z             {
2026-07-26T22:33:02.9148812Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:02.9148930Z               "line": 1221
2026-07-26T22:33:02.9149112Z             },
2026-07-26T22:33:02.9149212Z             {
2026-07-26T22:33:02.9149369Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:02.9149493Z               "line": 1226
2026-07-26T22:33:02.9149593Z             },
2026-07-26T22:33:02.9149693Z             {
2026-07-26T22:33:02.9149836Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:02.9149960Z               "line": 1952
2026-07-26T22:33:02.9150066Z             },
2026-07-26T22:33:02.9150170Z             {
2026-07-26T22:33:02.9150309Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:02.9150537Z               "line": 1939
2026-07-26T22:33:02.9150628Z             }
2026-07-26T22:33:02.9150729Z           ]
2026-07-26T22:33:02.9150813Z         }
2026-07-26T22:33:02.9150936Z       }
2026-07-26T22:33:02.9151022Z     },
2026-07-26T22:33:02.9151144Z     {
2026-07-26T22:33:02.9151287Z       "id": "REQ-GOSSIP-CONTROLLED-ANY",
2026-07-26T22:33:02.9153384Z       "title": "Bug #3: a locally-controlled endpoint gossips controller_node = None so remote viewers show it free to control. Root: driven_by is stamped Some(node) only for a REMOTE WAN attach (attach.rs:337); a local controller is by=None by design (broker.rs:1750, KH 7.15 — a local-only controller must not latch driven_by). Fix: broker stamps a SEPARATE any-controller datum (true/Some(host) for a local OR remote controller) alongside stamp_driven_by, and advertise_local gossips Instance controller_node from it, leaving the remote-only driven_by untouched (do not trip REQ-HAZARD-DRIVEN-BY-SELFHEAL). node-refresh is NOT the fix (data is absent at source). See docs/NEXT-MILESTONE-BUG-TRIAGE.md #3.",
2026-07-26T22:33:02.9153634Z       "requiredStages": [
2026-07-26T22:33:02.9153737Z         "impl",
2026-07-26T22:33:02.9153837Z         "unit"
2026-07-26T22:33:02.9153937Z       ],
2026-07-26T22:33:02.9154054Z       "stages": {
2026-07-26T22:33:02.9154159Z         "doc": {
2026-07-26T22:33:02.9154283Z           "complete": false,
2026-07-26T22:33:02.9154387Z           "evidence": []
2026-07-26T22:33:02.9154493Z         },
2026-07-26T22:33:02.9154598Z         "impl": {
2026-07-26T22:33:02.9154716Z           "complete": true,
2026-07-26T22:33:02.9154827Z           "evidence": [
2026-07-26T22:33:02.9154927Z             {
2026-07-26T22:33:02.9155079Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9155195Z               "line": 2251
2026-07-26T22:33:02.9155294Z             },
2026-07-26T22:33:02.9155394Z             {
2026-07-26T22:33:02.9155556Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:02.9155675Z               "line": 567
2026-07-26T22:33:02.9155776Z             },
2026-07-26T22:33:02.9155885Z             {
2026-07-26T22:33:02.9156043Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:02.9156163Z               "line": 966
2026-07-26T22:33:02.9156261Z             },
2026-07-26T22:33:02.9156365Z             {
2026-07-26T22:33:02.9156504Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9156621Z               "line": 480
2026-07-26T22:33:02.9156726Z             }
2026-07-26T22:33:02.9156831Z           ]
2026-07-26T22:33:02.9156935Z         },
2026-07-26T22:33:02.9157040Z         "int": {
2026-07-26T22:33:02.9157160Z           "complete": false,
2026-07-26T22:33:02.9157269Z           "evidence": []
2026-07-26T22:33:02.9157374Z         },
2026-07-26T22:33:02.9157484Z         "unit": {
2026-07-26T22:33:02.9157603Z           "complete": true,
2026-07-26T22:33:02.9157714Z           "evidence": [
2026-07-26T22:33:02.9157832Z             {
2026-07-26T22:33:02.9157994Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:02.9158109Z               "line": 1346
2026-07-26T22:33:02.9158213Z             }
2026-07-26T22:33:02.9158319Z           ]
2026-07-26T22:33:02.9158410Z         }
2026-07-26T22:33:02.9158518Z       }
2026-07-26T22:33:02.9158609Z     },
2026-07-26T22:33:02.9158701Z     {
2026-07-26T22:33:02.9158843Z       "id": "REQ-GOSSIP-CONTROLLED-CROSS-NODE",
2026-07-26T22:33:02.9161284Z       "title": "B7 (F028, operator, cross-node): a remote endpoint's CONTROLLED state is not rendered. Evidence: ball-b ONLINE + CONTROLLED on ENLYZEAM (local view), but HFENDULEAM renders remote ball-b as plain ONLINE (both 0.22.0). The F-026 #4 gossiped any-controller datum (REQ-GOSSIP-ADAPTER-PROJECTS controlled bool) either isn't SENT for the locally-controlled case, isn't APPLIED on the receiving row, or DECAYS. Local leg confirmed fine (sibling hall-b renders blue-glyph correctly); the gap is the REMOTE leg. perri's validation had this ENV-BLOCKED — two live nodes now available to RCA. FIX: RCA sender-side (is controlled gossiped when locally-controlled?) / receiver-render (does from_resource_row surface it?) / decay, then lock with a cross-node int. See triage B7.",
2026-07-26T22:33:02.9161520Z       "requiredStages": [],
2026-07-26T22:33:02.9161620Z       "stages": {
2026-07-26T22:33:02.9161724Z         "doc": {
2026-07-26T22:33:02.9161842Z           "complete": false,
2026-07-26T22:33:02.9161962Z           "evidence": []
2026-07-26T22:33:02.9162052Z         },
2026-07-26T22:33:02.9162152Z         "impl": {
2026-07-26T22:33:02.9162258Z           "complete": false,
2026-07-26T22:33:02.9162376Z           "evidence": []
2026-07-26T22:33:02.9162472Z         },
2026-07-26T22:33:02.9162578Z         "int": {
2026-07-26T22:33:02.9162701Z           "complete": false,
2026-07-26T22:33:02.9162944Z           "evidence": []
2026-07-26T22:33:02.9163044Z         },
2026-07-26T22:33:02.9163159Z         "unit": {
2026-07-26T22:33:02.9163292Z           "complete": false,
2026-07-26T22:33:02.9163406Z           "evidence": []
2026-07-26T22:33:02.9163503Z         }
2026-07-26T22:33:02.9163611Z       }
2026-07-26T22:33:02.9163701Z     },
2026-07-26T22:33:02.9163803Z     {
2026-07-26T22:33:02.9163945Z       "id": "REQ-GOSSIP-PROJECT-DERIVE-ONCE",
2026-07-26T22:33:02.9167682Z       "title": "REGISTRY-LIFECYCLE W4 fast-follow (hertz v0.37.0 field-verify CPU-gate FAIL RCA 2026-07-17, doyle seam-verified same day; timing-pinned ~16s burst clusters per 30s Registry pump round): recent-project gossip derives a project id AT MOST ONCE PER DISTINCT CWD per advertisement round — recent_projects_for dedups the RAW cwd string BEFORE project_id_for_dir (today seen.insert(pid) dedups AFTER derivation at registryhost.rs:1001, so every duplicate-cwd sessions.log row pays a git remote/rev-parse spawn: ~200 derivations/round on a 12-perch box, the post-self-hash-fix CPU floor). The pid-level dedup stays as the output-uniqueness second layer (distinct cwd spellings may collapse to one project); ordering semantics unchanged (first-occurrence newest-first); bounded ledger read unchanged. Gate: impl — cwd-dedup before derivation; unit — derivation-count observable == distinct cwds not ledger rows (duplicate-cwd ledger derives once), output/order parity vs the pre-fix shape on a mixed ledger. SEEDED SEPARATELY (not this REQ): gossip leg consults the ADR-0037 materialized index (kills git entirely + cross-round rederivation; staleness-semantics design change) + epoch-mint batching (26 atomic writes/round; durable-monotonic contract change).",
2026-07-26T22:33:02.9167853Z       "requiredStages": [
2026-07-26T22:33:02.9167949Z         "impl",
2026-07-26T22:33:02.9168058Z         "unit"
2026-07-26T22:33:02.9168158Z       ],
2026-07-26T22:33:02.9168264Z       "stages": {
2026-07-26T22:33:02.9168382Z         "doc": {
2026-07-26T22:33:02.9168506Z           "complete": false,
2026-07-26T22:33:02.9168613Z           "evidence": []
2026-07-26T22:33:02.9168726Z         },
2026-07-26T22:33:02.9168826Z         "impl": {
2026-07-26T22:33:02.9169026Z           "complete": true,
2026-07-26T22:33:02.9169131Z           "evidence": [
2026-07-26T22:33:02.9169237Z             {
2026-07-26T22:33:02.9169398Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:02.9169514Z               "line": 1007
2026-07-26T22:33:02.9169614Z             }
2026-07-26T22:33:02.9169721Z           ]
2026-07-26T22:33:02.9169821Z         },
2026-07-26T22:33:02.9169922Z         "int": {
2026-07-26T22:33:02.9170041Z           "complete": false,
2026-07-26T22:33:02.9170155Z           "evidence": []
2026-07-26T22:33:02.9170251Z         },
2026-07-26T22:33:02.9170355Z         "unit": {
2026-07-26T22:33:02.9170465Z           "complete": true,
2026-07-26T22:33:02.9170566Z           "evidence": [
2026-07-26T22:33:02.9170670Z             {
2026-07-26T22:33:02.9170833Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:02.9170942Z               "line": 1284
2026-07-26T22:33:02.9171148Z             },
2026-07-26T22:33:02.9171252Z             {
2026-07-26T22:33:02.9171409Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:02.9171529Z               "line": 1320
2026-07-26T22:33:02.9171628Z             }
2026-07-26T22:33:02.9171719Z           ]
2026-07-26T22:33:02.9171812Z         }
2026-07-26T22:33:02.9171914Z       }
2026-07-26T22:33:02.9172004Z     },
2026-07-26T22:33:02.9172114Z     {
2026-07-26T22:33:02.9172264Z       "id": "REQ-HAZARD-ADAPTER-APPLY-SILENT-NOOP",
2026-07-26T22:33:02.9177048Z       "title": "A DELEGATED live adapter apply MUST NEVER report success without performing the swap, and the live-update seam MUST use ONE parent-aware adapter matcher across all its comparators. TWO defects made the field repro (BUILD-F015B-APPLYMATCH: `--adapter cc:ccs` live update silently no-ops): (D1, matcher skew) the broker's dispatch_adapter_apply filtered sessions by EXACT `s.adapter == req.adapter`, but a `--adapter <adapter>:<profile>` endpoint stores the COMPOSITE `cc:ccs` while the apply carries the PARENT record name `cc` — so every :profile endpoint fell out to affected=[]; select_endpoints_running_adapter had the same `adp == adapter` skew, while the CLI live-gate (adapter_has_live_endpoint) already parent-matched — divergent rules on ONE seam. (D2, silent success) the affected.is_empty() branch replied KIND_APPLIED and RETURNED WITHOUT SWAPPING; once the CLI delegates the apply there is no CLI-side fallback swap, so success-without-swap = the update never lands (re-register re-reads the OLD manifest, version-of-truth honestly says old). FIX: (1) ONE shared spt_runtime::profile::adapter_parent_matches(session_adapter, parent) used by the live-gate + broker apply-filter + select_endpoints_running_adapter (no exact `==` against a record name at any live-update seam); (2) the daemon owns the whole apply once delegated — the CRC swap runs UNCONDITIONALLY (terminate/restart loops no-op when nothing is resident), KIND_APPLIED reported ONLY after a real swap. (F015B, ADR-0025 amendment)",
2026-07-26T22:33:02.9177349Z       "requiredStages": [
2026-07-26T22:33:02.9177453Z         "doc",
2026-07-26T22:33:02.9177557Z         "impl",
2026-07-26T22:33:02.9177671Z         "unit",
2026-07-26T22:33:02.9177774Z         "int"
2026-07-26T22:33:02.9177879Z       ],
2026-07-26T22:33:02.9177981Z       "stages": {
2026-07-26T22:33:02.9178089Z         "doc": {
2026-07-26T22:33:02.9178209Z           "complete": true,
2026-07-26T22:33:02.9178324Z           "evidence": [
2026-07-26T22:33:02.9178422Z             {
2026-07-26T22:33:02.9178567Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9178671Z               "line": 536
2026-07-26T22:33:02.9178766Z             },
2026-07-26T22:33:02.9178867Z             {
2026-07-26T22:33:02.9179071Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9179206Z               "line": 861
2026-07-26T22:33:02.9179306Z             },
2026-07-26T22:33:02.9179405Z             {
2026-07-26T22:33:02.9179629Z               "path": "docs/adr/0025-live-daemon-coordinated-adapter-update.md",
2026-07-26T22:33:02.9179730Z               "line": 59
2026-07-26T22:33:02.9179831Z             }
2026-07-26T22:33:02.9179934Z           ]
2026-07-26T22:33:02.9183678Z         },
2026-07-26T22:33:02.9183806Z         "impl": {
2026-07-26T22:33:02.9183936Z           "complete": true,
2026-07-26T22:33:02.9184031Z           "evidence": [
2026-07-26T22:33:02.9184126Z             {
2026-07-26T22:33:02.9184289Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9184412Z               "line": 6032
2026-07-26T22:33:02.9184521Z             },
2026-07-26T22:33:02.9184628Z             {
2026-07-26T22:33:02.9184794Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:02.9184895Z               "line": 70
2026-07-26T22:33:02.9185008Z             }
2026-07-26T22:33:02.9185113Z           ]
2026-07-26T22:33:02.9185214Z         },
2026-07-26T22:33:02.9185314Z         "int": {
2026-07-26T22:33:02.9185584Z           "complete": true,
2026-07-26T22:33:02.9185687Z           "evidence": [
2026-07-26T22:33:02.9185791Z             {
2026-07-26T22:33:02.9185983Z               "path": "crates/spt/tests/live_adapt_translation_swap_e2e.rs",
2026-07-26T22:33:02.9186096Z               "line": 416
2026-07-26T22:33:02.9186198Z             },
2026-07-26T22:33:02.9186297Z             {
2026-07-26T22:33:02.9186478Z               "path": "crates/spt/tests/live_adapt_translation_swap_e2e.rs",
2026-07-26T22:33:02.9186593Z               "line": 557
2026-07-26T22:33:02.9186693Z             },
2026-07-26T22:33:02.9186807Z             {
2026-07-26T22:33:02.9186979Z               "path": "crates/spt/tests/live_adapt_translation_swap_e2e.rs",
2026-07-26T22:33:02.9187089Z               "line": 816
2026-07-26T22:33:02.9187190Z             }
2026-07-26T22:33:02.9187403Z           ]
2026-07-26T22:33:02.9187495Z         },
2026-07-26T22:33:02.9187594Z         "unit": {
2026-07-26T22:33:02.9187708Z           "complete": true,
2026-07-26T22:33:02.9187829Z           "evidence": [
2026-07-26T22:33:02.9187928Z             {
2026-07-26T22:33:02.9188084Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9188198Z               "line": 8877
2026-07-26T22:33:02.9188301Z             },
2026-07-26T22:33:02.9188401Z             {
2026-07-26T22:33:02.9188555Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:02.9188668Z               "line": 473
2026-07-26T22:33:02.9188774Z             }
2026-07-26T22:33:02.9188874Z           ]
2026-07-26T22:33:02.9189065Z         }
2026-07-26T22:33:02.9189160Z       }
2026-07-26T22:33:02.9189259Z     },
2026-07-26T22:33:02.9189365Z     {
2026-07-26T22:33:02.9189541Z       "id": "REQ-HAZARD-ADAPTER-PROFILE-STAMP-CLOBBER",
2026-07-26T22:33:02.9192282Z       "title": "A-4 (F029, operator regression): the picker/confirm views drop an endpoint's adapter `:profile` (showed `claude-spt` where `claude-spt:ccs` was created). ROOT: stamp_creation_fields (spt-store/home.rs) gave the incoming BIND-TIME adapter value UNCONDITIONAL precedence (`rec.adapter = adapter.map(...).or_else(prior)`), but a hook bind resolves the adapter ADAPTER-AGNOSTICALLY (ADR-0021: a binary basename → the BARE parent, profile unknowable), so the first hook bind rewrote the richer `claude-spt:ccs` → `claude-spt`. (F-028's establish_perch self-heal widened how often this re-stamps; the precedence is the root.) FIX: profile-preserving precedence — when the incoming adapter is exactly the PARENT of the prior's `parent:profile` composite, KEEP the prior; replace only on a genuinely different adapter (or a different explicit profile). Paid-for field bug → hazard. See triage A-4.",
2026-07-26T22:33:02.9192430Z       "requiredStages": [
2026-07-26T22:33:02.9192539Z         "impl",
2026-07-26T22:33:02.9192636Z         "unit",
2026-07-26T22:33:02.9192768Z         "int"
2026-07-26T22:33:02.9192868Z       ],
2026-07-26T22:33:02.9192974Z       "stages": {
2026-07-26T22:33:02.9193077Z         "doc": {
2026-07-26T22:33:02.9193206Z           "complete": false,
2026-07-26T22:33:02.9193361Z           "evidence": []
2026-07-26T22:33:02.9193470Z         },
2026-07-26T22:33:02.9193571Z         "impl": {
2026-07-26T22:33:02.9193685Z           "complete": true,
2026-07-26T22:33:02.9193794Z           "evidence": [
2026-07-26T22:33:02.9193895Z             {
2026-07-26T22:33:02.9194038Z               "path": "crates/spt-store/src/home.rs",
2026-07-26T22:33:02.9194142Z               "line": 149
2026-07-26T22:33:02.9194253Z             }
2026-07-26T22:33:02.9194347Z           ]
2026-07-26T22:33:02.9194452Z         },
2026-07-26T22:33:02.9194553Z         "int": {
2026-07-26T22:33:02.9194662Z           "complete": true,
2026-07-26T22:33:02.9194767Z           "evidence": [
2026-07-26T22:33:02.9194873Z             {
2026-07-26T22:33:02.9195068Z               "path": "crates/spt/tests/bind_adapter_profile_persist_e2e.rs",
2026-07-26T22:33:02.9195230Z               "line": 173
2026-07-26T22:33:02.9195344Z             }
2026-07-26T22:33:02.9195564Z           ]
2026-07-26T22:33:02.9195669Z         },
2026-07-26T22:33:02.9195774Z         "unit": {
2026-07-26T22:33:02.9195893Z           "complete": true,
2026-07-26T22:33:02.9196006Z           "evidence": [
2026-07-26T22:33:02.9196111Z             {
2026-07-26T22:33:02.9196256Z               "path": "crates/spt-store/src/home.rs",
2026-07-26T22:33:02.9196370Z               "line": 424
2026-07-26T22:33:02.9196471Z             }
2026-07-26T22:33:02.9196571Z           ]
2026-07-26T22:33:02.9196675Z         }
2026-07-26T22:33:02.9196777Z       }
2026-07-26T22:33:02.9196877Z     },
2026-07-26T22:33:02.9196971Z     {
2026-07-26T22:33:02.9197125Z       "id": "REQ-HAZARD-ATOMIC-TMP-COLLISION",
2026-07-26T22:33:02.9197620Z       "title": "Concurrent atomic writers to the same target must not share a tmp name (5.15): a fixed tmp sibling makes one writer's rename consume the other's staged file (os-error-2 loser)",
2026-07-26T22:33:02.9197844Z       "requiredStages": [
2026-07-26T22:33:02.9197958Z         "impl",
2026-07-26T22:33:02.9198064Z         "unit"
2026-07-26T22:33:02.9198163Z       ],
2026-07-26T22:33:02.9198278Z       "stages": {
2026-07-26T22:33:02.9198370Z         "doc": {
2026-07-26T22:33:02.9198492Z           "complete": true,
2026-07-26T22:33:02.9198601Z           "evidence": [
2026-07-26T22:33:02.9198701Z             {
2026-07-26T22:33:02.9198838Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9199033Z               "line": 278
2026-07-26T22:33:02.9199129Z             }
2026-07-26T22:33:02.9199228Z           ]
2026-07-26T22:33:02.9199329Z         },
2026-07-26T22:33:02.9199429Z         "impl": {
2026-07-26T22:33:02.9199538Z           "complete": true,
2026-07-26T22:33:02.9199649Z           "evidence": [
2026-07-26T22:33:02.9199748Z             {
2026-07-26T22:33:02.9199896Z               "path": "crates/spt-store/src/atomic.rs",
2026-07-26T22:33:02.9200006Z               "line": 116
2026-07-26T22:33:02.9200106Z             }
2026-07-26T22:33:02.9200206Z           ]
2026-07-26T22:33:02.9200307Z         },
2026-07-26T22:33:02.9200406Z         "int": {
2026-07-26T22:33:02.9200525Z           "complete": false,
2026-07-26T22:33:02.9200646Z           "evidence": []
2026-07-26T22:33:02.9200744Z         },
2026-07-26T22:33:02.9200845Z         "unit": {
2026-07-26T22:33:02.9200956Z           "complete": true,
2026-07-26T22:33:02.9201063Z           "evidence": [
2026-07-26T22:33:02.9201165Z             {
2026-07-26T22:33:02.9201299Z               "path": "crates/spt-store/src/atomic.rs",
2026-07-26T22:33:02.9201406Z               "line": 276
2026-07-26T22:33:02.9201516Z             }
2026-07-26T22:33:02.9201612Z           ]
2026-07-26T22:33:02.9201707Z         }
2026-07-26T22:33:02.9201807Z       }
2026-07-26T22:33:02.9201908Z     },
2026-07-26T22:33:02.9201999Z     {
2026-07-26T22:33:02.9202131Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-07-26T22:33:02.9207559Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-07-26T22:33:02.9207841Z       "requiredStages": [
2026-07-26T22:33:02.9207947Z         "int"
2026-07-26T22:33:02.9208056Z       ],
2026-07-26T22:33:02.9208161Z       "stages": {
2026-07-26T22:33:02.9208267Z         "doc": {
2026-07-26T22:33:02.9208390Z           "complete": false,
2026-07-26T22:33:02.9208625Z           "evidence": []
2026-07-26T22:33:02.9208723Z         },
2026-07-26T22:33:02.9208833Z         "impl": {
2026-07-26T22:33:02.9209090Z           "complete": false,
2026-07-26T22:33:02.9209209Z           "evidence": []
2026-07-26T22:33:02.9209309Z         },
2026-07-26T22:33:02.9209417Z         "int": {
2026-07-26T22:33:02.9209536Z           "complete": true,
2026-07-26T22:33:02.9209641Z           "evidence": [
2026-07-26T22:33:02.9209741Z             {
2026-07-26T22:33:02.9209899Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-07-26T22:33:02.9210018Z               "line": 303
2026-07-26T22:33:02.9210117Z             }
2026-07-26T22:33:02.9210218Z           ]
2026-07-26T22:33:02.9210318Z         },
2026-07-26T22:33:02.9210427Z         "unit": {
2026-07-26T22:33:02.9210542Z           "complete": false,
2026-07-26T22:33:02.9210656Z           "evidence": []
2026-07-26T22:33:02.9210751Z         }
2026-07-26T22:33:02.9210853Z       }
2026-07-26T22:33:02.9210957Z     },
2026-07-26T22:33:02.9211061Z     {
2026-07-26T22:33:02.9211191Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-07-26T22:33:02.9213794Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-07-26T22:33:02.9213940Z       "requiredStages": [
2026-07-26T22:33:02.9214047Z         "impl",
2026-07-26T22:33:02.9214169Z         "unit",
2026-07-26T22:33:02.9214273Z         "int"
2026-07-26T22:33:02.9214373Z       ],
2026-07-26T22:33:02.9214477Z       "stages": {
2026-07-26T22:33:02.9214576Z         "doc": {
2026-07-26T22:33:02.9214696Z           "complete": false,
2026-07-26T22:33:02.9214815Z           "evidence": []
2026-07-26T22:33:02.9214915Z         },
2026-07-26T22:33:02.9215025Z         "impl": {
2026-07-26T22:33:02.9215139Z           "complete": true,
2026-07-26T22:33:02.9215253Z           "evidence": [
2026-07-26T22:33:02.9215359Z             {
2026-07-26T22:33:02.9215510Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9215612Z               "line": 478
2026-07-26T22:33:02.9215711Z             }
2026-07-26T22:33:02.9215811Z           ]
2026-07-26T22:33:02.9215916Z         },
2026-07-26T22:33:02.9216022Z         "int": {
2026-07-26T22:33:02.9216159Z           "complete": true,
2026-07-26T22:33:02.9216275Z           "evidence": [
2026-07-26T22:33:02.9216378Z             {
2026-07-26T22:33:02.9216656Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-07-26T22:33:02.9216770Z               "line": 93
2026-07-26T22:33:02.9216871Z             }
2026-07-26T22:33:02.9216962Z           ]
2026-07-26T22:33:02.9217060Z         },
2026-07-26T22:33:02.9217168Z         "unit": {
2026-07-26T22:33:02.9217279Z           "complete": true,
2026-07-26T22:33:02.9217396Z           "evidence": [
2026-07-26T22:33:02.9217495Z             {
2026-07-26T22:33:02.9217640Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9217748Z               "line": 1674
2026-07-26T22:33:02.9217849Z             },
2026-07-26T22:33:02.9217949Z             {
2026-07-26T22:33:02.9218087Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9218193Z               "line": 1696
2026-07-26T22:33:02.9218401Z             },
2026-07-26T22:33:02.9218502Z             {
2026-07-26T22:33:02.9218650Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9218764Z               "line": 1765
2026-07-26T22:33:02.9218866Z             }
2026-07-26T22:33:02.9219050Z           ]
2026-07-26T22:33:02.9219156Z         }
2026-07-26T22:33:02.9219255Z       }
2026-07-26T22:33:02.9219360Z     },
2026-07-26T22:33:02.9219461Z     {
2026-07-26T22:33:02.9219627Z       "id": "REQ-HAZARD-BIND-REST-STATE-CARRY",
2026-07-26T22:33:02.9222579Z       "title": "GATEWAY-LIVENESS DEFECT A (flynn field bug 2026-07-09, confirmed independent): a re-bind MUST preserve the daemon-owned resting intent (rest_state, D9-2/REQ-INST-3) — the same carry-forward discipline establish_perch already applies to cwd/controllable/adapter/read_env. ROOT: establish_perch's record build (crates/spt/src/api/startup.rs, the build closure) constructs a fresh InfoJson via InfoJson::new (defaults rest_state None) and carries cwd/controllable/read_env forward from prior but NOT rest_state -> a re-bind WIPES the wake intent (flynn tick11 rest_state:active vanish). FIX: carry prior.rest_state (and its paired dormant_since_ms anchor, present iff dormant) forward on re-bind, like the sibling fields. Gate: a re-bind over a prior record with rest_state set preserves it (unit — the build closure carries rest_state + dormant_since_ms). KNOWN-HAZARDS entry on landing. Kin REQ-HAZARD-BIND-CWD-UNSET / REQ-PICKER-1 + REQ-INST-3.",
2026-07-26T22:33:02.9222738Z       "requiredStages": [
2026-07-26T22:33:02.9222888Z         "impl",
2026-07-26T22:33:02.9223009Z         "unit"
2026-07-26T22:33:02.9223124Z       ],
2026-07-26T22:33:02.9223232Z       "stages": {
2026-07-26T22:33:02.9223333Z         "doc": {
2026-07-26T22:33:02.9223457Z           "complete": false,
2026-07-26T22:33:02.9223561Z           "evidence": []
2026-07-26T22:33:02.9223662Z         },
2026-07-26T22:33:02.9223766Z         "impl": {
2026-07-26T22:33:02.9223890Z           "complete": true,
2026-07-26T22:33:02.9224010Z           "evidence": [
2026-07-26T22:33:02.9224115Z             {
2026-07-26T22:33:02.9224259Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9224387Z               "line": 512
2026-07-26T22:33:02.9224486Z             }
2026-07-26T22:33:02.9224593Z           ]
2026-07-26T22:33:02.9224692Z         },
2026-07-26T22:33:02.9224795Z         "int": {
2026-07-26T22:33:02.9224905Z           "complete": false,
2026-07-26T22:33:02.9225019Z           "evidence": []
2026-07-26T22:33:02.9225117Z         },
2026-07-26T22:33:02.9225218Z         "unit": {
2026-07-26T22:33:02.9225323Z           "complete": true,
2026-07-26T22:33:02.9225422Z           "evidence": [
2026-07-26T22:33:02.9225527Z             {
2026-07-26T22:33:02.9225676Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9225780Z               "line": 1727
2026-07-26T22:33:02.9225886Z             }
2026-07-26T22:33:02.9225985Z           ]
2026-07-26T22:33:02.9226089Z         }
2026-07-26T22:33:02.9226191Z       }
2026-07-26T22:33:02.9226290Z     },
2026-07-26T22:33:02.9226376Z     {
2026-07-26T22:33:02.9226525Z       "id": "REQ-HAZARD-BOUNDARY-READY-STRAND",
2026-07-26T22:33:02.9230320Z       "title": "C-2 (F029, SEAM-2 pinned — B6's SECOND HALF, the live-wake blocker; perri wakep9 vs wakep4 gate-state dump + doyle code trace): at a /clear, CC fires SessionEnd(reason=clear) for the DEPARTING session BEFORE SessionStart; the departing sid STILL matches the perch pin at that instant, so the adapter's [hooks.SessionEnd] → `api session-end` AUTHENTICATES and the soft handler REMOVES the ready marker (+ unregister_address, reporting.rs cmd_session_end:206-207). The subsequent `api boundary` rotates the sid but NOTHING re-writes ready → is_online false → try_spt_hosted_inject Nones on the CLI gate BEFORE any broker RPC → every post-clear force-native (incl. the checkpoint FIRE) reports the generic UNDELIVERED, persistent by construction (no path re-stamps ready outside a real bind). The single differing gate field at every UNDELIVERED instant is ready-absent (info online/controllable/rotated-sid all healthy, translate alive). Paid-for hazard. FIX: cmd_boundary re-stamps the ready marker (+ status online, idempotent) ATOMICALLY with the sid rotation — a boundary PROVES a live successor session on the same harness process; a REAL end has no subsequent boundary so genuine teardown is untouched. See triage addendum C-2.",
2026-07-26T22:33:02.9230612Z       "requiredStages": [
2026-07-26T22:33:02.9230714Z         "impl",
2026-07-26T22:33:02.9230818Z         "int"
2026-07-26T22:33:02.9230917Z       ],
2026-07-26T22:33:02.9231019Z       "stages": {
2026-07-26T22:33:02.9231124Z         "doc": {
2026-07-26T22:33:02.9231247Z           "complete": false,
2026-07-26T22:33:02.9231353Z           "evidence": []
2026-07-26T22:33:02.9231452Z         },
2026-07-26T22:33:02.9231552Z         "impl": {
2026-07-26T22:33:02.9231672Z           "complete": true,
2026-07-26T22:33:02.9231777Z           "evidence": [
2026-07-26T22:33:02.9231896Z             {
2026-07-26T22:33:02.9232049Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.9232168Z               "line": 103
2026-07-26T22:33:02.9232293Z             }
2026-07-26T22:33:02.9232396Z           ]
2026-07-26T22:33:02.9232501Z         },
2026-07-26T22:33:02.9232603Z         "int": {
2026-07-26T22:33:02.9232720Z           "complete": true,
2026-07-26T22:33:02.9232835Z           "evidence": [
2026-07-26T22:33:02.9232941Z             {
2026-07-26T22:33:02.9233125Z               "path": "crates/spt/tests/boundary_ready_strand_e2e.rs",
2026-07-26T22:33:02.9233240Z               "line": 154
2026-07-26T22:33:02.9233341Z             }
2026-07-26T22:33:02.9233435Z           ]
2026-07-26T22:33:02.9233525Z         },
2026-07-26T22:33:02.9233659Z         "unit": {
2026-07-26T22:33:02.9233773Z           "complete": false,
2026-07-26T22:33:02.9233875Z           "evidence": []
2026-07-26T22:33:02.9233984Z         }
2026-07-26T22:33:02.9234074Z       }
2026-07-26T22:33:02.9234208Z     },
2026-07-26T22:33:02.9234308Z     {
2026-07-26T22:33:02.9234450Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-07-26T22:33:02.9236978Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-07-26T22:33:02.9237128Z       "requiredStages": [
2026-07-26T22:33:02.9237228Z         "doc",
2026-07-26T22:33:02.9237342Z         "impl",
2026-07-26T22:33:02.9237443Z         "unit",
2026-07-26T22:33:02.9237676Z         "int"
2026-07-26T22:33:02.9237781Z       ],
2026-07-26T22:33:02.9237895Z       "stages": {
2026-07-26T22:33:02.9237996Z         "doc": {
2026-07-26T22:33:02.9238120Z           "complete": true,
2026-07-26T22:33:02.9238232Z           "evidence": [
2026-07-26T22:33:02.9238342Z             {
2026-07-26T22:33:02.9238465Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9238582Z               "line": 368
2026-07-26T22:33:02.9238673Z             }
2026-07-26T22:33:02.9238774Z           ]
2026-07-26T22:33:02.9238878Z         },
2026-07-26T22:33:02.9239055Z         "impl": {
2026-07-26T22:33:02.9239164Z           "complete": true,
2026-07-26T22:33:02.9239289Z           "evidence": [
2026-07-26T22:33:02.9239393Z             {
2026-07-26T22:33:02.9239550Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9239751Z               "line": 600
2026-07-26T22:33:02.9239856Z             },
2026-07-26T22:33:02.9239957Z             {
2026-07-26T22:33:02.9240123Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9240238Z               "line": 605
2026-07-26T22:33:02.9240343Z             },
2026-07-26T22:33:02.9240437Z             {
2026-07-26T22:33:02.9240582Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9240695Z               "line": 1041
2026-07-26T22:33:02.9240804Z             },
2026-07-26T22:33:02.9240903Z             {
2026-07-26T22:33:02.9241054Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9241163Z               "line": 1082
2026-07-26T22:33:02.9241269Z             },
2026-07-26T22:33:02.9241364Z             {
2026-07-26T22:33:02.9241507Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9241612Z               "line": 1093
2026-07-26T22:33:02.9241721Z             },
2026-07-26T22:33:02.9241821Z             {
2026-07-26T22:33:02.9241979Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:02.9242093Z               "line": 395
2026-07-26T22:33:02.9242204Z             }
2026-07-26T22:33:02.9242303Z           ]
2026-07-26T22:33:02.9242403Z         },
2026-07-26T22:33:02.9242504Z         "int": {
2026-07-26T22:33:02.9242627Z           "complete": true,
2026-07-26T22:33:02.9242732Z           "evidence": [
2026-07-26T22:33:02.9242834Z             {
2026-07-26T22:33:02.9242990Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-07-26T22:33:02.9243105Z               "line": 30
2026-07-26T22:33:02.9243219Z             }
2026-07-26T22:33:02.9243319Z           ]
2026-07-26T22:33:02.9243430Z         },
2026-07-26T22:33:02.9243544Z         "unit": {
2026-07-26T22:33:02.9243671Z           "complete": true,
2026-07-26T22:33:02.9243775Z           "evidence": [
2026-07-26T22:33:02.9243882Z             {
2026-07-26T22:33:02.9244042Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9244172Z               "line": 1782
2026-07-26T22:33:02.9244276Z             },
2026-07-26T22:33:02.9244386Z             {
2026-07-26T22:33:02.9244530Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9244648Z               "line": 1807
2026-07-26T22:33:02.9244754Z             },
2026-07-26T22:33:02.9244859Z             {
2026-07-26T22:33:02.9245005Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9245126Z               "line": 1824
2026-07-26T22:33:02.9245225Z             },
2026-07-26T22:33:02.9245330Z             {
2026-07-26T22:33:02.9245479Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9245592Z               "line": 1867
2026-07-26T22:33:02.9245683Z             }
2026-07-26T22:33:02.9245788Z           ]
2026-07-26T22:33:02.9245887Z         }
2026-07-26T22:33:02.9245996Z       }
2026-07-26T22:33:02.9246092Z     },
2026-07-26T22:33:02.9246190Z     {
2026-07-26T22:33:02.9246357Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-07-26T22:33:02.9249085Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-07-26T22:33:02.9249457Z       "requiredStages": [],
2026-07-26T22:33:02.9249558Z       "stages": {
2026-07-26T22:33:02.9249663Z         "doc": {
2026-07-26T22:33:02.9249796Z           "complete": false,
2026-07-26T22:33:02.9249916Z           "evidence": []
2026-07-26T22:33:02.9250007Z         },
2026-07-26T22:33:02.9250115Z         "impl": {
2026-07-26T22:33:02.9250236Z           "complete": false,
2026-07-26T22:33:02.9250340Z           "evidence": []
2026-07-26T22:33:02.9250527Z         },
2026-07-26T22:33:02.9250630Z         "int": {
2026-07-26T22:33:02.9250745Z           "complete": false,
2026-07-26T22:33:02.9250865Z           "evidence": []
2026-07-26T22:33:02.9250959Z         },
2026-07-26T22:33:02.9251069Z         "unit": {
2026-07-26T22:33:02.9251185Z           "complete": false,
2026-07-26T22:33:02.9251297Z           "evidence": []
2026-07-26T22:33:02.9251392Z         }
2026-07-26T22:33:02.9251497Z       }
2026-07-26T22:33:02.9251596Z     },
2026-07-26T22:33:02.9251700Z     {
2026-07-26T22:33:02.9251867Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-07-26T22:33:02.9255648Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-07-26T22:33:02.9255833Z       "requiredStages": [],
2026-07-26T22:33:02.9255944Z       "stages": {
2026-07-26T22:33:02.9256043Z         "doc": {
2026-07-26T22:33:02.9256162Z           "complete": false,
2026-07-26T22:33:02.9256268Z           "evidence": []
2026-07-26T22:33:02.9256376Z         },
2026-07-26T22:33:02.9256475Z         "impl": {
2026-07-26T22:33:02.9256600Z           "complete": true,
2026-07-26T22:33:02.9256703Z           "evidence": [
2026-07-26T22:33:02.9256802Z             {
2026-07-26T22:33:02.9256950Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:02.9257070Z               "line": 105
2026-07-26T22:33:02.9257179Z             },
2026-07-26T22:33:02.9257290Z             {
2026-07-26T22:33:02.9257432Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:02.9257652Z               "line": 150
2026-07-26T22:33:02.9257756Z             }
2026-07-26T22:33:02.9257862Z           ]
2026-07-26T22:33:02.9257966Z         },
2026-07-26T22:33:02.9258075Z         "int": {
2026-07-26T22:33:02.9258191Z           "complete": false,
2026-07-26T22:33:02.9258300Z           "evidence": []
2026-07-26T22:33:02.9258404Z         },
2026-07-26T22:33:02.9258506Z         "unit": {
2026-07-26T22:33:02.9258624Z           "complete": true,
2026-07-26T22:33:02.9258743Z           "evidence": [
2026-07-26T22:33:02.9258845Z             {
2026-07-26T22:33:02.9259053Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:02.9259155Z               "line": 889
2026-07-26T22:33:02.9259268Z             }
2026-07-26T22:33:02.9259367Z           ]
2026-07-26T22:33:02.9259467Z         }
2026-07-26T22:33:02.9259674Z       }
2026-07-26T22:33:02.9259775Z     },
2026-07-26T22:33:02.9259870Z     {
2026-07-26T22:33:02.9260036Z       "id": "REQ-HAZARD-BROKER-FLOOR-LOCK-POISON",
2026-07-26T22:33:02.9267700Z       "title": "B-1 (REMOTE-TRUTH triage §B-1, PIVOTED @e5eb99a): NO bare `.lock().unwrap()` on a broker-resident lock reachable from serve/dispatch — a brain-only self-update keeps the broker + all its Mutexes ALIVE (REQ-UPD-3), so a single panic under one poisons it PERMANENTLY: the next `.lock().unwrap()` panics, kills its per-conn reply thread, and EVERY subsequent attach silently deadlines ('brain IPC read deadline elapsed') while non-locked ops keep working. TRIAGE-DRIFT (sweep-dispatch-site-counts discipline): the triage named 3 sites (broker.rs:1163 flush_inject_floor / :1297 inject-worker-open / :2142 buffer_if_held) as the surviving class, but ALL 3 are the INJECT FLOOR and were ALREADY poison-proofed by REQ-HAZARD-INJECT-WORKER-POISON (lock_floor, shipped post-triage — the FLOOR HALF is SUBSUMED, this seed redirects). The SURVIVING class (matching the triage's own symptom description) is the ATTACH-PATH lock set: self.sessions Mutex<HashMap> ×18 + its sessions_exit alias ×1, the per-session OutputLog RING ×11 (log/h.log/log_drain/log_exit), pair_holds ×4 — 34 production bare .lock().unwrap() (cfg(test) excluded). FIX (doyle B-1 ruling): recover ALL THREE via ONE shared `recover<T>(&Mutex<T>) -> MutexGuard<T>` helper (into_inner idiom, same as lock_floor / the effect journal bug #16 — safe for the short coherent-on-recovery map ops of sessions/pair_holds), plus `recover_log(&Mutex<OutputLog>)` for the ring which adds a COHERENCE CLAMP on the poison-recovery path: a panic mid-append can leave the ring torn (over-cap, a last seq not below next_seq, non-monotonic front/back) and serving those bytes risks garbage, so OutputLog::clamp_or_reset cheap-checks the invariants and RESETS the ring empty (next_seq preserved — cursors never rewind) + loud-logs on violation. Rationale: fail-fast on the log reintroduces the very wedge B-1 kills (poisoned log = every subscriber attach panics forever); blind recover serves torn bytes; clamp-or-reset costs only scrollback that self-heals on the next PTY output + repaint (lost scrollback << permanent wedge, torn-serve eliminated not tolerated). Sessions/pair_holds recover bare (short map ops, coherent-on-recovery). CLASS invariant (KNOWN-HAZARDS 7.33): any new broker-resident lock uses recover/recover_log or a documented fail-fast justification. Red-first: a scripted panic-under-sessions-lock → recover hands back a usable guard, the next attach still opens; a TORN-RING variant → recover_log clamps/resets so the subscriber gets sane bytes.",
2026-07-26T22:33:02.9267949Z       "requiredStages": [
2026-07-26T22:33:02.9268044Z         "doc",
2026-07-26T22:33:02.9268159Z         "impl",
2026-07-26T22:33:02.9268259Z         "unit"
2026-07-26T22:33:02.9268363Z       ],
2026-07-26T22:33:02.9268465Z       "stages": {
2026-07-26T22:33:02.9268574Z         "doc": {
2026-07-26T22:33:02.9268698Z           "complete": true,
2026-07-26T22:33:02.9268813Z           "evidence": [
2026-07-26T22:33:02.9268917Z             {
2026-07-26T22:33:02.9269265Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9269386Z               "line": 613
2026-07-26T22:33:02.9269503Z             }
2026-07-26T22:33:02.9269599Z           ]
2026-07-26T22:33:02.9269705Z         },
2026-07-26T22:33:02.9269814Z         "impl": {
2026-07-26T22:33:02.9269927Z           "complete": true,
2026-07-26T22:33:02.9270037Z           "evidence": [
2026-07-26T22:33:02.9270140Z             {
2026-07-26T22:33:02.9270277Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9270397Z               "line": 1233
2026-07-26T22:33:02.9270497Z             },
2026-07-26T22:33:02.9270596Z             {
2026-07-26T22:33:02.9270741Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9270864Z               "line": 2939
2026-07-26T22:33:02.9270964Z             },
2026-07-26T22:33:02.9271178Z             {
2026-07-26T22:33:02.9271318Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9271422Z               "line": 2954
2026-07-26T22:33:02.9271522Z             }
2026-07-26T22:33:02.9271671Z           ]
2026-07-26T22:33:02.9271769Z         },
2026-07-26T22:33:02.9271879Z         "int": {
2026-07-26T22:33:02.9272024Z           "complete": false,
2026-07-26T22:33:02.9272147Z           "evidence": []
2026-07-26T22:33:02.9272253Z         },
2026-07-26T22:33:02.9272353Z         "unit": {
2026-07-26T22:33:02.9272470Z           "complete": true,
2026-07-26T22:33:02.9272622Z           "evidence": [
2026-07-26T22:33:02.9272730Z             {
2026-07-26T22:33:02.9272872Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9272992Z               "line": 7008
2026-07-26T22:33:02.9273087Z             },
2026-07-26T22:33:02.9273201Z             {
2026-07-26T22:33:02.9273335Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9273459Z               "line": 7674
2026-07-26T22:33:02.9273560Z             },
2026-07-26T22:33:02.9273664Z             {
2026-07-26T22:33:02.9273802Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9273927Z               "line": 7708
2026-07-26T22:33:02.9274032Z             }
2026-07-26T22:33:02.9274141Z           ]
2026-07-26T22:33:02.9274233Z         }
2026-07-26T22:33:02.9274332Z       }
2026-07-26T22:33:02.9274427Z     },
2026-07-26T22:33:02.9274523Z     {
2026-07-26T22:33:02.9274675Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-07-26T22:33:02.9277344Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-07-26T22:33:02.9277492Z       "requiredStages": [
2026-07-26T22:33:02.9277601Z         "doc",
2026-07-26T22:33:02.9277715Z         "impl",
2026-07-26T22:33:02.9277828Z         "unit",
2026-07-26T22:33:02.9277923Z         "int"
2026-07-26T22:33:02.9278018Z       ],
2026-07-26T22:33:02.9278133Z       "stages": {
2026-07-26T22:33:02.9278237Z         "doc": {
2026-07-26T22:33:02.9278352Z           "complete": true,
2026-07-26T22:33:02.9278457Z           "evidence": [
2026-07-26T22:33:02.9278566Z             {
2026-07-26T22:33:02.9278701Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9278838Z               "line": 337
2026-07-26T22:33:02.9279025Z             }
2026-07-26T22:33:02.9279129Z           ]
2026-07-26T22:33:02.9279233Z         },
2026-07-26T22:33:02.9279458Z         "impl": {
2026-07-26T22:33:02.9279562Z           "complete": true,
2026-07-26T22:33:02.9279673Z           "evidence": [
2026-07-26T22:33:02.9279772Z             {
2026-07-26T22:33:02.9279936Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:02.9280049Z               "line": 140
2026-07-26T22:33:02.9280145Z             },
2026-07-26T22:33:02.9280250Z             {
2026-07-26T22:33:02.9280392Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.9280505Z               "line": 1204
2026-07-26T22:33:02.9280606Z             },
2026-07-26T22:33:02.9280705Z             {
2026-07-26T22:33:02.9280832Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.9280947Z               "line": 1742
2026-07-26T22:33:02.9281052Z             },
2026-07-26T22:33:02.9281381Z             {
2026-07-26T22:33:02.9281534Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9281653Z               "line": 23
2026-07-26T22:33:02.9281758Z             },
2026-07-26T22:33:02.9281863Z             {
2026-07-26T22:33:02.9282006Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9282120Z               "line": 113
2026-07-26T22:33:02.9282221Z             },
2026-07-26T22:33:02.9282325Z             {
2026-07-26T22:33:02.9282478Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9282588Z               "line": 158
2026-07-26T22:33:02.9282677Z             },
2026-07-26T22:33:02.9282774Z             {
2026-07-26T22:33:02.9282917Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9283025Z               "line": 234
2026-07-26T22:33:02.9283125Z             },
2026-07-26T22:33:02.9283234Z             {
2026-07-26T22:33:02.9283380Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9283499Z               "line": 247
2026-07-26T22:33:02.9283596Z             },
2026-07-26T22:33:02.9283694Z             {
2026-07-26T22:33:02.9283853Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9283972Z               "line": 318
2026-07-26T22:33:02.9284076Z             },
2026-07-26T22:33:02.9284182Z             {
2026-07-26T22:33:02.9284324Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9284440Z               "line": 332
2026-07-26T22:33:02.9284539Z             },
2026-07-26T22:33:02.9284634Z             {
2026-07-26T22:33:02.9284774Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9284877Z               "line": 377
2026-07-26T22:33:02.9284992Z             },
2026-07-26T22:33:02.9285093Z             {
2026-07-26T22:33:02.9285240Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9285380Z               "line": 423
2026-07-26T22:33:02.9285488Z             },
2026-07-26T22:33:02.9285588Z             {
2026-07-26T22:33:02.9285742Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9285850Z               "line": 435
2026-07-26T22:33:02.9285949Z             },
2026-07-26T22:33:02.9286050Z             {
2026-07-26T22:33:02.9286193Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9286297Z               "line": 449
2026-07-26T22:33:02.9286399Z             },
2026-07-26T22:33:02.9286503Z             {
2026-07-26T22:33:02.9286656Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9286755Z               "line": 476
2026-07-26T22:33:02.9286860Z             },
2026-07-26T22:33:02.9286960Z             {
2026-07-26T22:33:02.9287108Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9287217Z               "line": 810
2026-07-26T22:33:02.9287319Z             },
2026-07-26T22:33:02.9287422Z             {
2026-07-26T22:33:02.9287571Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9287691Z               "line": 1156
2026-07-26T22:33:02.9287799Z             },
2026-07-26T22:33:02.9288001Z             {
2026-07-26T22:33:02.9288156Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9288265Z               "line": 890
2026-07-26T22:33:02.9288370Z             },
2026-07-26T22:33:02.9288473Z             {
2026-07-26T22:33:02.9288621Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9288726Z               "line": 3812
2026-07-26T22:33:02.9288826Z             },
2026-07-26T22:33:02.9288926Z             {
2026-07-26T22:33:02.9289150Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9289256Z               "line": 4066
2026-07-26T22:33:02.9289356Z             },
2026-07-26T22:33:02.9289460Z             {
2026-07-26T22:33:02.9289609Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9289713Z               "line": 4078
2026-07-26T22:33:02.9289910Z             },
2026-07-26T22:33:02.9290014Z             {
2026-07-26T22:33:02.9290147Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9290271Z               "line": 5361
2026-07-26T22:33:02.9290366Z             },
2026-07-26T22:33:02.9290467Z             {
2026-07-26T22:33:02.9290609Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9290724Z               "line": 202
2026-07-26T22:33:02.9290820Z             },
2026-07-26T22:33:02.9290915Z             {
2026-07-26T22:33:02.9291042Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9291152Z               "line": 310
2026-07-26T22:33:02.9291255Z             },
2026-07-26T22:33:02.9291364Z             {
2026-07-26T22:33:02.9291512Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9291641Z               "line": 321
2026-07-26T22:33:02.9291745Z             },
2026-07-26T22:33:02.9291842Z             {
2026-07-26T22:33:02.9291984Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9292109Z               "line": 378
2026-07-26T22:33:02.9292213Z             },
2026-07-26T22:33:02.9292327Z             {
2026-07-26T22:33:02.9292471Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-07-26T22:33:02.9292580Z               "line": 56
2026-07-26T22:33:02.9292685Z             },
2026-07-26T22:33:02.9292791Z             {
2026-07-26T22:33:02.9292933Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-07-26T22:33:02.9293038Z               "line": 188
2026-07-26T22:33:02.9293134Z             },
2026-07-26T22:33:02.9293233Z             {
2026-07-26T22:33:02.9293373Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-07-26T22:33:02.9293487Z               "line": 82
2026-07-26T22:33:02.9293571Z             },
2026-07-26T22:33:02.9293675Z             {
2026-07-26T22:33:02.9293818Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.9293930Z               "line": 698
2026-07-26T22:33:02.9294036Z             },
2026-07-26T22:33:02.9294137Z             {
2026-07-26T22:33:02.9294269Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:02.9294389Z               "line": 546
2026-07-26T22:33:02.9294494Z             },
2026-07-26T22:33:02.9294603Z             {
2026-07-26T22:33:02.9294718Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9294833Z               "line": 4299
2026-07-26T22:33:02.9294932Z             }
2026-07-26T22:33:02.9295033Z           ]
2026-07-26T22:33:02.9295132Z         },
2026-07-26T22:33:02.9295227Z         "int": {
2026-07-26T22:33:02.9295353Z           "complete": true,
2026-07-26T22:33:02.9295462Z           "evidence": [
2026-07-26T22:33:02.9295566Z             {
2026-07-26T22:33:02.9295710Z               "path": "crates/spt/tests/brain_survive.rs",
2026-07-26T22:33:02.9295824Z               "line": 57
2026-07-26T22:33:02.9295925Z             },
2026-07-26T22:33:02.9296025Z             {
2026-07-26T22:33:02.9296167Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-07-26T22:33:02.9296278Z               "line": 41
2026-07-26T22:33:02.9296382Z             }
2026-07-26T22:33:02.9296581Z           ]
2026-07-26T22:33:02.9296677Z         },
2026-07-26T22:33:02.9296790Z         "unit": {
2026-07-26T22:33:02.9296901Z           "complete": true,
2026-07-26T22:33:02.9297015Z           "evidence": [
2026-07-26T22:33:02.9297105Z             {
2026-07-26T22:33:02.9297249Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:02.9297349Z               "line": 791
2026-07-26T22:33:02.9297458Z             },
2026-07-26T22:33:02.9297559Z             {
2026-07-26T22:33:02.9297716Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:02.9297825Z               "line": 1137
2026-07-26T22:33:02.9297936Z             },
2026-07-26T22:33:02.9298036Z             {
2026-07-26T22:33:02.9298175Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9298354Z               "line": 1238
2026-07-26T22:33:02.9298455Z             },
2026-07-26T22:33:02.9298557Z             {
2026-07-26T22:33:02.9298707Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9298817Z               "line": 1272
2026-07-26T22:33:02.9298916Z             },
2026-07-26T22:33:02.9299099Z             {
2026-07-26T22:33:02.9299244Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9299362Z               "line": 1314
2026-07-26T22:33:02.9299472Z             },
2026-07-26T22:33:02.9299572Z             {
2026-07-26T22:33:02.9299715Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9299816Z               "line": 1386
2026-07-26T22:33:02.9299916Z             },
2026-07-26T22:33:02.9304018Z             {
2026-07-26T22:33:02.9304226Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9304345Z               "line": 1399
2026-07-26T22:33:02.9304444Z             },
2026-07-26T22:33:02.9304558Z             {
2026-07-26T22:33:02.9304725Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9304848Z               "line": 1422
2026-07-26T22:33:02.9304959Z             },
2026-07-26T22:33:02.9305054Z             {
2026-07-26T22:33:02.9305197Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9305316Z               "line": 1448
2026-07-26T22:33:02.9305421Z             },
2026-07-26T22:33:02.9305526Z             {
2026-07-26T22:33:02.9305669Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9305787Z               "line": 1462
2026-07-26T22:33:02.9305889Z             },
2026-07-26T22:33:02.9305993Z             {
2026-07-26T22:33:02.9306141Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9306256Z               "line": 1486
2026-07-26T22:33:02.9306355Z             },
2026-07-26T22:33:02.9306456Z             {
2026-07-26T22:33:02.9306594Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9306709Z               "line": 1644
2026-07-26T22:33:02.9306810Z             },
2026-07-26T22:33:02.9306919Z             {
2026-07-26T22:33:02.9307064Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9307170Z               "line": 1912
2026-07-26T22:33:02.9307271Z             },
2026-07-26T22:33:02.9307374Z             {
2026-07-26T22:33:02.9307524Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9307637Z               "line": 1967
2026-07-26T22:33:02.9307737Z             },
2026-07-26T22:33:02.9307843Z             {
2026-07-26T22:33:02.9307985Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9308100Z               "line": 2013
2026-07-26T22:33:02.9308200Z             },
2026-07-26T22:33:02.9308309Z             {
2026-07-26T22:33:02.9308458Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9308571Z               "line": 2058
2026-07-26T22:33:02.9308681Z             },
2026-07-26T22:33:02.9308787Z             {
2026-07-26T22:33:02.9308934Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9309267Z               "line": 2102
2026-07-26T22:33:02.9309367Z             },
2026-07-26T22:33:02.9309495Z             {
2026-07-26T22:33:02.9309646Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9309746Z               "line": 2144
2026-07-26T22:33:02.9309851Z             },
2026-07-26T22:33:02.9309951Z             {
2026-07-26T22:33:02.9310099Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9310199Z               "line": 6293
2026-07-26T22:33:02.9310294Z             },
2026-07-26T22:33:02.9310396Z             {
2026-07-26T22:33:02.9310546Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-07-26T22:33:02.9310648Z               "line": 217
2026-07-26T22:33:02.9310753Z             },
2026-07-26T22:33:02.9310852Z             {
2026-07-26T22:33:02.9310996Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-07-26T22:33:02.9311205Z               "line": 233
2026-07-26T22:33:02.9311306Z             },
2026-07-26T22:33:02.9311410Z             {
2026-07-26T22:33:02.9311553Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-07-26T22:33:02.9311660Z               "line": 254
2026-07-26T22:33:02.9311758Z             },
2026-07-26T22:33:02.9311863Z             {
2026-07-26T22:33:02.9312012Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-07-26T22:33:02.9312115Z               "line": 265
2026-07-26T22:33:02.9312224Z             },
2026-07-26T22:33:02.9312325Z             {
2026-07-26T22:33:02.9312465Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-07-26T22:33:02.9312571Z               "line": 278
2026-07-26T22:33:02.9312666Z             },
2026-07-26T22:33:02.9312770Z             {
2026-07-26T22:33:02.9312914Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-07-26T22:33:02.9313024Z               "line": 289
2026-07-26T22:33:02.9313133Z             },
2026-07-26T22:33:02.9313234Z             {
2026-07-26T22:33:02.9313386Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-07-26T22:33:02.9313500Z               "line": 301
2026-07-26T22:33:02.9313610Z             },
2026-07-26T22:33:02.9313710Z             {
2026-07-26T22:33:02.9313858Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-07-26T22:33:02.9313958Z               "line": 312
2026-07-26T22:33:02.9314062Z             },
2026-07-26T22:33:02.9314168Z             {
2026-07-26T22:33:02.9314315Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-07-26T22:33:02.9314425Z               "line": 323
2026-07-26T22:33:02.9314532Z             },
2026-07-26T22:33:02.9314630Z             {
2026-07-26T22:33:02.9314767Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-07-26T22:33:02.9314891Z               "line": 332
2026-07-26T22:33:02.9314994Z             },
2026-07-26T22:33:02.9315089Z             {
2026-07-26T22:33:02.9315228Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-07-26T22:33:02.9315347Z               "line": 342
2026-07-26T22:33:02.9315442Z             },
2026-07-26T22:33:02.9315543Z             {
2026-07-26T22:33:02.9315671Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-07-26T22:33:02.9315791Z               "line": 358
2026-07-26T22:33:02.9315891Z             },
2026-07-26T22:33:02.9315995Z             {
2026-07-26T22:33:02.9316135Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.9316239Z               "line": 2329
2026-07-26T22:33:02.9316338Z             },
2026-07-26T22:33:02.9316445Z             {
2026-07-26T22:33:02.9316591Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.9316706Z               "line": 2365
2026-07-26T22:33:02.9316797Z             },
2026-07-26T22:33:02.9316896Z             {
2026-07-26T22:33:02.9317036Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:02.9317150Z               "line": 1114
2026-07-26T22:33:02.9317264Z             },
2026-07-26T22:33:02.9317365Z             {
2026-07-26T22:33:02.9317507Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-07-26T22:33:02.9317696Z               "line": 147
2026-07-26T22:33:02.9317783Z             },
2026-07-26T22:33:02.9317892Z             {
2026-07-26T22:33:02.9318031Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-07-26T22:33:02.9318145Z               "line": 226
2026-07-26T22:33:02.9318244Z             },
2026-07-26T22:33:02.9318351Z             {
2026-07-26T22:33:02.9318489Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-07-26T22:33:02.9318602Z               "line": 295
2026-07-26T22:33:02.9318708Z             },
2026-07-26T22:33:02.9318817Z             {
2026-07-26T22:33:02.9319028Z               "path": "crates/spt/tests/brain_split.rs",
2026-07-26T22:33:02.9319136Z               "line": 17
2026-07-26T22:33:02.9319241Z             },
2026-07-26T22:33:02.9319347Z             {
2026-07-26T22:33:02.9319624Z               "path": "crates/spt/tests/brain_split.rs",
2026-07-26T22:33:02.9319714Z               "line": 104
2026-07-26T22:33:02.9319817Z             }
2026-07-26T22:33:02.9319917Z           ]
2026-07-26T22:33:02.9320022Z         }
2026-07-26T22:33:02.9320125Z       }
2026-07-26T22:33:02.9320224Z     },
2026-07-26T22:33:02.9320316Z     {
2026-07-26T22:33:02.9320463Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-07-26T22:33:02.9323645Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-07-26T22:33:02.9323808Z       "requiredStages": [
2026-07-26T22:33:02.9323913Z         "doc",
2026-07-26T22:33:02.9324012Z         "impl",
2026-07-26T22:33:02.9324113Z         "unit",
2026-07-26T22:33:02.9324217Z         "int"
2026-07-26T22:33:02.9324317Z       ],
2026-07-26T22:33:02.9324423Z       "stages": {
2026-07-26T22:33:02.9324523Z         "doc": {
2026-07-26T22:33:02.9324637Z           "complete": true,
2026-07-26T22:33:02.9324753Z           "evidence": [
2026-07-26T22:33:02.9324847Z             {
2026-07-26T22:33:02.9325014Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9325116Z               "line": 423
2026-07-26T22:33:02.9325237Z             }
2026-07-26T22:33:02.9325336Z           ]
2026-07-26T22:33:02.9325442Z         },
2026-07-26T22:33:02.9325549Z         "impl": {
2026-07-26T22:33:02.9325668Z           "complete": true,
2026-07-26T22:33:02.9325769Z           "evidence": [
2026-07-26T22:33:02.9325873Z             {
2026-07-26T22:33:02.9326021Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.9326131Z               "line": 1389
2026-07-26T22:33:02.9326226Z             },
2026-07-26T22:33:02.9326327Z             {
2026-07-26T22:33:02.9326470Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.9326656Z               "line": 1412
2026-07-26T22:33:02.9326761Z             }
2026-07-26T22:33:02.9326856Z           ]
2026-07-26T22:33:02.9326951Z         },
2026-07-26T22:33:02.9327052Z         "int": {
2026-07-26T22:33:02.9327171Z           "complete": true,
2026-07-26T22:33:02.9327281Z           "evidence": [
2026-07-26T22:33:02.9327376Z             {
2026-07-26T22:33:02.9327649Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-07-26T22:33:02.9327761Z               "line": 233
2026-07-26T22:33:02.9327872Z             },
2026-07-26T22:33:02.9327968Z             {
2026-07-26T22:33:02.9328119Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-07-26T22:33:02.9328228Z               "line": 477
2026-07-26T22:33:02.9328334Z             }
2026-07-26T22:33:02.9328428Z           ]
2026-07-26T22:33:02.9328523Z         },
2026-07-26T22:33:02.9328629Z         "unit": {
2026-07-26T22:33:02.9328748Z           "complete": true,
2026-07-26T22:33:02.9328857Z           "evidence": [
2026-07-26T22:33:02.9329049Z             {
2026-07-26T22:33:02.9329196Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:02.9329296Z               "line": 2553
2026-07-26T22:33:02.9329401Z             }
2026-07-26T22:33:02.9329607Z           ]
2026-07-26T22:33:02.9329706Z         }
2026-07-26T22:33:02.9329806Z       }
2026-07-26T22:33:02.9329912Z     },
2026-07-26T22:33:02.9330011Z     {
2026-07-26T22:33:02.9330160Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-07-26T22:33:02.9333839Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-07-26T22:33:02.9333995Z       "requiredStages": [
2026-07-26T22:33:02.9334097Z         "doc",
2026-07-26T22:33:02.9334196Z         "impl",
2026-07-26T22:33:02.9334296Z         "unit"
2026-07-26T22:33:02.9334388Z       ],
2026-07-26T22:33:02.9334488Z       "stages": {
2026-07-26T22:33:02.9334586Z         "doc": {
2026-07-26T22:33:02.9334707Z           "complete": true,
2026-07-26T22:33:02.9334806Z           "evidence": [
2026-07-26T22:33:02.9334906Z             {
2026-07-26T22:33:02.9335041Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9335164Z               "line": 430
2026-07-26T22:33:02.9335264Z             }
2026-07-26T22:33:02.9335384Z           ]
2026-07-26T22:33:02.9335483Z         },
2026-07-26T22:33:02.9335584Z         "impl": {
2026-07-26T22:33:02.9335694Z           "complete": true,
2026-07-26T22:33:02.9335811Z           "evidence": [
2026-07-26T22:33:02.9335901Z             {
2026-07-26T22:33:02.9336054Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9336148Z               "line": 75
2026-07-26T22:33:02.9336253Z             }
2026-07-26T22:33:02.9336348Z           ]
2026-07-26T22:33:02.9336457Z         },
2026-07-26T22:33:02.9336558Z         "int": {
2026-07-26T22:33:02.9336682Z           "complete": false,
2026-07-26T22:33:02.9336781Z           "evidence": []
2026-07-26T22:33:02.9336882Z         },
2026-07-26T22:33:02.9336987Z         "unit": {
2026-07-26T22:33:02.9337105Z           "complete": true,
2026-07-26T22:33:02.9337211Z           "evidence": [
2026-07-26T22:33:02.9337321Z             {
2026-07-26T22:33:02.9337459Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9337693Z               "line": 1463
2026-07-26T22:33:02.9337793Z             }
2026-07-26T22:33:02.9337894Z           ]
2026-07-26T22:33:02.9337993Z         }
2026-07-26T22:33:02.9338098Z       }
2026-07-26T22:33:02.9338194Z     },
2026-07-26T22:33:02.9338312Z     {
2026-07-26T22:33:02.9338466Z       "id": "REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE",
2026-07-26T22:33:02.9342594Z       "title": "W2 (LIFECYCLE-TRUTH, KNOWN-HAZARDS, flagship — the update wedge): PTY viewer fan-out and control mutations must not depend synchronously on a live draining brain. ROOT rig-CONFIRMED (NtSuspendProcess on the brain, no update involved): brain-subscriber session-output writes ride UNDER the per-session log lock (broker.rs:19-20); failed writes are handled (cursor freeze + detach :3486) but BLOCKED writes are not. Suspended brain => within seconds attached rc output freezes; detach does NOT release the control stamp (release routes through the brain); reattach REFUSED (controlled-by); rc --take hangs; daemon status stays healthy. Field: every brain cycle (incl. every update apply) has a freeze window; a stalled/slow-draining new brain = permanent wedge until bounce; brain.ready != subscribers drained. FIX SHAPE (todlando proposes, doyle RULES BEFORE IMPL): subscriber writes move OFF the log lock (bounded/nonblocking, stall => detach-subscriber like viewer eviction — broker already buffers + replays on re-attach, so a detached-stalled brain self-heals by rewind); control stamp release/take completes against the BROKER without brain round-trip (or bounded with loud timeout). doc = KNOWN-HAZARDS entry. Int (tonight's rig, encoded): suspend brain child mid-session -> attached viewer ticks CONTINUE + rc --take completes; resume -> no output lost (cursor replay).",
2026-07-26T22:33:02.9342928Z       "requiredStages": [
2026-07-26T22:33:02.9343034Z         "doc",
2026-07-26T22:33:02.9343142Z         "impl",
2026-07-26T22:33:02.9343248Z         "unit",
2026-07-26T22:33:02.9343349Z         "int"
2026-07-26T22:33:02.9343453Z       ],
2026-07-26T22:33:02.9343573Z       "stages": {
2026-07-26T22:33:02.9343683Z         "doc": {
2026-07-26T22:33:02.9343795Z           "complete": true,
2026-07-26T22:33:02.9343914Z           "evidence": [
2026-07-26T22:33:02.9344005Z             {
2026-07-26T22:33:02.9344145Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9344246Z               "line": 633
2026-07-26T22:33:02.9344347Z             }
2026-07-26T22:33:02.9344446Z           ]
2026-07-26T22:33:02.9344550Z         },
2026-07-26T22:33:02.9344652Z         "impl": {
2026-07-26T22:33:02.9344766Z           "complete": true,
2026-07-26T22:33:02.9344865Z           "evidence": [
2026-07-26T22:33:02.9344967Z             {
2026-07-26T22:33:02.9345109Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.9345224Z               "line": 1323
2026-07-26T22:33:02.9345333Z             },
2026-07-26T22:33:02.9345433Z             {
2026-07-26T22:33:02.9345582Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9345815Z               "line": 201
2026-07-26T22:33:02.9345921Z             },
2026-07-26T22:33:02.9346019Z             {
2026-07-26T22:33:02.9346159Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9346273Z               "line": 210
2026-07-26T22:33:02.9346376Z             },
2026-07-26T22:33:02.9346476Z             {
2026-07-26T22:33:02.9346609Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9346722Z               "line": 382
2026-07-26T22:33:02.9346822Z             },
2026-07-26T22:33:02.9346923Z             {
2026-07-26T22:33:02.9347070Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9347171Z               "line": 394
2026-07-26T22:33:02.9347276Z             },
2026-07-26T22:33:02.9347375Z             {
2026-07-26T22:33:02.9347519Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9347699Z               "line": 399
2026-07-26T22:33:02.9347810Z             },
2026-07-26T22:33:02.9347919Z             {
2026-07-26T22:33:02.9348066Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9348177Z               "line": 408
2026-07-26T22:33:02.9348281Z             },
2026-07-26T22:33:02.9348381Z             {
2026-07-26T22:33:02.9348525Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9348634Z               "line": 1578
2026-07-26T22:33:02.9348735Z             },
2026-07-26T22:33:02.9348839Z             {
2026-07-26T22:33:02.9349036Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9349150Z               "line": 1614
2026-07-26T22:33:02.9349253Z             },
2026-07-26T22:33:02.9349348Z             {
2026-07-26T22:33:02.9349502Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9349606Z               "line": 2416
2026-07-26T22:33:02.9349711Z             },
2026-07-26T22:33:02.9349811Z             {
2026-07-26T22:33:02.9349949Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9350065Z               "line": 5344
2026-07-26T22:33:02.9350164Z             },
2026-07-26T22:33:02.9350254Z             {
2026-07-26T22:33:02.9350379Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9350483Z               "line": 4601
2026-07-26T22:33:02.9350588Z             },
2026-07-26T22:33:02.9350690Z             {
2026-07-26T22:33:02.9350822Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9350926Z               "line": 4877
2026-07-26T22:33:02.9351028Z             }
2026-07-26T22:33:02.9351126Z           ]
2026-07-26T22:33:02.9351227Z         },
2026-07-26T22:33:02.9351324Z         "int": {
2026-07-26T22:33:02.9351479Z           "complete": true,
2026-07-26T22:33:02.9351583Z           "evidence": [
2026-07-26T22:33:02.9351679Z             {
2026-07-26T22:33:02.9351843Z               "path": "crates/spt-daemon/tests/brain_decouple.rs",
2026-07-26T22:33:02.9351991Z               "line": 221
2026-07-26T22:33:02.9352096Z             }
2026-07-26T22:33:02.9352196Z           ]
2026-07-26T22:33:02.9352302Z         },
2026-07-26T22:33:02.9352406Z         "unit": {
2026-07-26T22:33:02.9352515Z           "complete": true,
2026-07-26T22:33:02.9352626Z           "evidence": [
2026-07-26T22:33:02.9352735Z             {
2026-07-26T22:33:02.9352869Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9352983Z               "line": 8745
2026-07-26T22:33:02.9353088Z             },
2026-07-26T22:33:02.9353193Z             {
2026-07-26T22:33:02.9353336Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9353450Z               "line": 8822
2026-07-26T22:33:02.9353542Z             },
2026-07-26T22:33:02.9353641Z             {
2026-07-26T22:33:02.9353779Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9353895Z               "line": 8851
2026-07-26T22:33:02.9353994Z             },
2026-07-26T22:33:02.9354099Z             {
2026-07-26T22:33:02.9354219Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9354450Z               "line": 19026
2026-07-26T22:33:02.9354550Z             }
2026-07-26T22:33:02.9354658Z           ]
2026-07-26T22:33:02.9354748Z         }
2026-07-26T22:33:02.9354845Z       }
2026-07-26T22:33:02.9354940Z     },
2026-07-26T22:33:02.9355044Z     {
2026-07-26T22:33:02.9355188Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-07-26T22:33:02.9355401Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-07-26T22:33:02.9355517Z       "requiredStages": [
2026-07-26T22:33:02.9355636Z         "impl",
2026-07-26T22:33:02.9355736Z         "unit"
2026-07-26T22:33:02.9355846Z       ],
2026-07-26T22:33:02.9355941Z       "stages": {
2026-07-26T22:33:02.9356036Z         "doc": {
2026-07-26T22:33:02.9356152Z           "complete": false,
2026-07-26T22:33:02.9356269Z           "evidence": []
2026-07-26T22:33:02.9356481Z         },
2026-07-26T22:33:02.9356593Z         "impl": {
2026-07-26T22:33:02.9356700Z           "complete": true,
2026-07-26T22:33:02.9356829Z           "evidence": [
2026-07-26T22:33:02.9356931Z             {
2026-07-26T22:33:02.9357079Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.9357179Z               "line": 249
2026-07-26T22:33:02.9357286Z             },
2026-07-26T22:33:02.9357387Z             {
2026-07-26T22:33:02.9357540Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:02.9357644Z               "line": 18
2026-07-26T22:33:02.9357750Z             },
2026-07-26T22:33:02.9357851Z             {
2026-07-26T22:33:02.9357978Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:02.9358084Z               "line": 147
2026-07-26T22:33:02.9358184Z             }
2026-07-26T22:33:02.9358283Z           ]
2026-07-26T22:33:02.9358384Z         },
2026-07-26T22:33:02.9358488Z         "int": {
2026-07-26T22:33:02.9358608Z           "complete": false,
2026-07-26T22:33:02.9358733Z           "evidence": []
2026-07-26T22:33:02.9358832Z         },
2026-07-26T22:33:02.9358937Z         "unit": {
2026-07-26T22:33:02.9359286Z           "complete": true,
2026-07-26T22:33:02.9359395Z           "evidence": [
2026-07-26T22:33:02.9359495Z             {
2026-07-26T22:33:02.9359644Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.9359752Z               "line": 1470
2026-07-26T22:33:02.9359856Z             },
2026-07-26T22:33:02.9359956Z             {
2026-07-26T22:33:02.9360104Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:02.9360208Z               "line": 262
2026-07-26T22:33:02.9360305Z             },
2026-07-26T22:33:02.9360410Z             {
2026-07-26T22:33:02.9360542Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:02.9360653Z               "line": 334
2026-07-26T22:33:02.9360748Z             }
2026-07-26T22:33:02.9360847Z           ]
2026-07-26T22:33:02.9360949Z         }
2026-07-26T22:33:02.9361048Z       }
2026-07-26T22:33:02.9361158Z     },
2026-07-26T22:33:02.9361259Z     {
2026-07-26T22:33:02.9361406Z       "id": "REQ-HAZARD-CEREMONY-CLOCK-STEP",
2026-07-26T22:33:02.9364206Z       "title": "W1/D3 (JOIN-TRUTH, KNOWN-HAZARDS): the cached ceremony offset goes stale-WRONG when the OS clock STEPS under a live daemon — an offset measured against the OLD clock keeps applying for up to the 15-min TTL. Field-proven timeline (enlyzeam): refresh cadence 15:08/15:23/15:38/15:53; operator `w32tm /resync` stepped the clock −210s at 15:45:46; every `subnet join` returned NO_SEED_HOLDER until a daemon bounce forced a fresh query. Fix: the cache snapshot stores an (Instant, SystemTime) PAIR; on read, if |wall-elapsed − mono-elapsed| > ~2s the clock stepped ⇒ force an immediate refresh (offset recomputed against the new clock). PLUS: `meet_seed_holder` (pairhost.rs), on search-deadline exhaustion, forces ONE fresh NTP refresh + one final sweep before returning NO_SEED_HOLDER — so a stepped-clock join self-heals without a bounce. Clock reads must be seam-injectable for the hazard unit (inject the (mono,wall) pair — do NOT sleep 15 min).",
2026-07-26T22:33:02.9364474Z       "requiredStages": [
2026-07-26T22:33:02.9364587Z         "impl",
2026-07-26T22:33:02.9364688Z         "unit"
2026-07-26T22:33:02.9364789Z       ],
2026-07-26T22:33:02.9364887Z       "stages": {
2026-07-26T22:33:02.9364991Z         "doc": {
2026-07-26T22:33:02.9365097Z           "complete": false,
2026-07-26T22:33:02.9365214Z           "evidence": []
2026-07-26T22:33:02.9365313Z         },
2026-07-26T22:33:02.9365414Z         "impl": {
2026-07-26T22:33:02.9365529Z           "complete": true,
2026-07-26T22:33:02.9365642Z           "evidence": [
2026-07-26T22:33:02.9365739Z             {
2026-07-26T22:33:02.9365900Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:02.9365995Z               "line": 498
2026-07-26T22:33:02.9366101Z             },
2026-07-26T22:33:02.9366201Z             {
2026-07-26T22:33:02.9366477Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:02.9366586Z               "line": 111
2026-07-26T22:33:02.9366712Z             },
2026-07-26T22:33:02.9366815Z             {
2026-07-26T22:33:02.9366969Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:02.9367065Z               "line": 118
2026-07-26T22:33:02.9367168Z             },
2026-07-26T22:33:02.9367269Z             {
2026-07-26T22:33:02.9367426Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:02.9367544Z               "line": 174
2026-07-26T22:33:02.9367640Z             },
2026-07-26T22:33:02.9367748Z             {
2026-07-26T22:33:02.9367894Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:02.9368000Z               "line": 195
2026-07-26T22:33:02.9368096Z             },
2026-07-26T22:33:02.9368195Z             {
2026-07-26T22:33:02.9368334Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:02.9368457Z               "line": 202
2026-07-26T22:33:02.9368562Z             }
2026-07-26T22:33:02.9368668Z           ]
2026-07-26T22:33:02.9368777Z         },
2026-07-26T22:33:02.9368887Z         "int": {
2026-07-26T22:33:02.9369073Z           "complete": false,
2026-07-26T22:33:02.9369187Z           "evidence": []
2026-07-26T22:33:02.9369283Z         },
2026-07-26T22:33:02.9369392Z         "unit": {
2026-07-26T22:33:02.9369502Z           "complete": true,
2026-07-26T22:33:02.9369617Z           "evidence": [
2026-07-26T22:33:02.9369711Z             {
2026-07-26T22:33:02.9369856Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:02.9369955Z               "line": 827
2026-07-26T22:33:02.9370055Z             },
2026-07-26T22:33:02.9370161Z             {
2026-07-26T22:33:02.9370308Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:02.9370411Z               "line": 860
2026-07-26T22:33:02.9370516Z             },
2026-07-26T22:33:02.9370618Z             {
2026-07-26T22:33:02.9370764Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:02.9370870Z               "line": 477
2026-07-26T22:33:02.9370979Z             },
2026-07-26T22:33:02.9371079Z             {
2026-07-26T22:33:02.9371232Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:02.9371336Z               "line": 537
2026-07-26T22:33:02.9371441Z             }
2026-07-26T22:33:02.9371537Z           ]
2026-07-26T22:33:02.9371642Z         }
2026-07-26T22:33:02.9371741Z       }
2026-07-26T22:33:02.9371843Z     },
2026-07-26T22:33:02.9371942Z     {
2026-07-26T22:33:02.9372096Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-07-26T22:33:02.9372552Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-07-26T22:33:02.9372675Z       "requiredStages": [
2026-07-26T22:33:02.9372775Z         "impl",
2026-07-26T22:33:02.9372883Z         "unit"
2026-07-26T22:33:02.9372982Z       ],
2026-07-26T22:33:02.9373083Z       "stages": {
2026-07-26T22:33:02.9373184Z         "doc": {
2026-07-26T22:33:02.9373407Z           "complete": true,
2026-07-26T22:33:02.9373517Z           "evidence": [
2026-07-26T22:33:02.9373622Z             {
2026-07-26T22:33:02.9373761Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9373874Z               "line": 227
2026-07-26T22:33:02.9373979Z             }
2026-07-26T22:33:02.9374085Z           ]
2026-07-26T22:33:02.9374189Z         },
2026-07-26T22:33:02.9374289Z         "impl": {
2026-07-26T22:33:02.9374409Z           "complete": true,
2026-07-26T22:33:02.9374509Z           "evidence": [
2026-07-26T22:33:02.9374613Z             {
2026-07-26T22:33:02.9374766Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:02.9374880Z               "line": 372
2026-07-26T22:33:02.9374982Z             },
2026-07-26T22:33:02.9375081Z             {
2026-07-26T22:33:02.9375335Z               "path": "crates/spt-daemon/src/translation.rs",
2026-07-26T22:33:02.9375447Z               "line": 244
2026-07-26T22:33:02.9375546Z             },
2026-07-26T22:33:02.9375652Z             {
2026-07-26T22:33:02.9375798Z               "path": "crates/spt-daemon/src/translation.rs",
2026-07-26T22:33:02.9375902Z               "line": 259
2026-07-26T22:33:02.9376003Z             },
2026-07-26T22:33:02.9376103Z             {
2026-07-26T22:33:02.9376241Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.9376347Z               "line": 823
2026-07-26T22:33:02.9376450Z             },
2026-07-26T22:33:02.9376551Z             {
2026-07-26T22:33:02.9376699Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.9376803Z               "line": 1045
2026-07-26T22:33:02.9376899Z             },
2026-07-26T22:33:02.9377009Z             {
2026-07-26T22:33:02.9377146Z               "path": "crates/spt-store/src/gitrun.rs",
2026-07-26T22:33:02.9377267Z               "line": 107
2026-07-26T22:33:02.9377371Z             }
2026-07-26T22:33:02.9377476Z           ]
2026-07-26T22:33:02.9377577Z         },
2026-07-26T22:33:02.9377695Z         "int": {
2026-07-26T22:33:02.9377810Z           "complete": false,
2026-07-26T22:33:02.9377939Z           "evidence": []
2026-07-26T22:33:02.9378043Z         },
2026-07-26T22:33:02.9378147Z         "unit": {
2026-07-26T22:33:02.9378257Z           "complete": true,
2026-07-26T22:33:02.9378369Z           "evidence": [
2026-07-26T22:33:02.9378473Z             {
2026-07-26T22:33:02.9378613Z               "path": "crates/spt-daemon/src/translation.rs",
2026-07-26T22:33:02.9378731Z               "line": 402
2026-07-26T22:33:02.9378827Z             },
2026-07-26T22:33:02.9378937Z             {
2026-07-26T22:33:02.9379152Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.9379270Z               "line": 1571
2026-07-26T22:33:02.9379370Z             },
2026-07-26T22:33:02.9379476Z             {
2026-07-26T22:33:02.9379623Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.9379738Z               "line": 1609
2026-07-26T22:33:02.9379839Z             },
2026-07-26T22:33:02.9379948Z             {
2026-07-26T22:33:02.9380091Z               "path": "crates/spt-store/src/gitrun.rs",
2026-07-26T22:33:02.9380191Z               "line": 198
2026-07-26T22:33:02.9380296Z             }
2026-07-26T22:33:02.9380406Z           ]
2026-07-26T22:33:02.9380501Z         }
2026-07-26T22:33:02.9380600Z       }
2026-07-26T22:33:02.9380716Z     },
2026-07-26T22:33:02.9380821Z     {
2026-07-26T22:33:02.9380962Z       "id": "REQ-HAZARD-COMMUNE-INGEST-BLACKHOLE",
2026-07-26T22:33:02.9387121Z       "title": "F-032 (perri field finding 2026-07-08, LEGACY-SPT-PARITY-GAP, data-loss): commune/signoff ingest MUST NOT delete a drop until its content is DURABLY COMMITTED to every APPLICABLE tier — a slice that cannot be committed this ingest must leave the drop in place for a later ingest (retry when the precondition resolves) OR durably preserve the un-committed slice, NEVER delete-then-lose. ROOT (doyle triage, code-grounded): ingest_drops (spt-live/src/ingest.rs:200) unconditionally `remove_file(&drop_path)?` AFTER route_slices (ingest.rs:121), but route_slices GATES the project tier on `!project_id.is_empty()` (ingest.rs:156) — when the endpoint's cwd is unresolved/owlery-internal at ingest time the project_id is empty, so the `<project-context>` slice is PARSED but never write_context'd/commit_project'd, yet the source drop is still deleted → the project-context content is permanently lost (black-hole). perri's repro: a two-sliced echo-commune (<live-context> role+release recipe + <project-context> v0.17.4 status + Items 3-5 map) INGESTED (file deleted) yet never surfaced at her next SessionStart resume-pull; adapter exonerated (file-write + slicing tags correct); fixture at (system temp)/F-032-commune-2026-07-08T222721Z.md (5595B, sha256 9bc27e18cf385958; perri wrote it verbatim from session log 0841835d.jsonl). Legacy spt held commit-first-then-delete parity; the modern two-slice ingest broke it. FIX distinguishes: a write SUPPRESSED-by-precedence (incoming older than durable → already-superseded → safe to delete) from a slice NOT-committed-because-un-committable-now (empty project_id / write error → must NOT delete; retry or preserve). Gate: an ingest with a non-empty <project-context> slice but an EMPTY project_id must NOT delete the drop (or must durably preserve the project slice) — the content survives to the next resolvable ingest / SessionStart; the live-tier commit path stays unchanged; a genuinely superseded (precedence-suppressed) drop still deletes. KNOWN-HAZARDS entry on landing (REQ-HAZARD-* = conformance-checklist, needs a test).",
2026-07-26T22:33:02.9387517Z       "requiredStages": [
2026-07-26T22:33:02.9387631Z         "impl",
2026-07-26T22:33:02.9387735Z         "unit",
2026-07-26T22:33:02.9387841Z         "int"
2026-07-26T22:33:02.9387940Z       ],
2026-07-26T22:33:02.9388050Z       "stages": {
2026-07-26T22:33:02.9388175Z         "doc": {
2026-07-26T22:33:02.9388293Z           "complete": true,
2026-07-26T22:33:02.9388399Z           "evidence": [
2026-07-26T22:33:02.9388528Z             {
2026-07-26T22:33:02.9388659Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9388774Z               "line": 665
2026-07-26T22:33:02.9388877Z             }
2026-07-26T22:33:02.9389048Z           ]
2026-07-26T22:33:02.9389140Z         },
2026-07-26T22:33:02.9389254Z         "impl": {
2026-07-26T22:33:02.9389363Z           "complete": true,
2026-07-26T22:33:02.9389492Z           "evidence": [
2026-07-26T22:33:02.9389592Z             {
2026-07-26T22:33:02.9389736Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:02.9389845Z               "line": 201
2026-07-26T22:33:02.9389953Z             },
2026-07-26T22:33:02.9390055Z             {
2026-07-26T22:33:02.9390198Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:02.9390302Z               "line": 233
2026-07-26T22:33:02.9390408Z             },
2026-07-26T22:33:02.9390508Z             {
2026-07-26T22:33:02.9390651Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:02.9390770Z               "line": 253
2026-07-26T22:33:02.9390870Z             }
2026-07-26T22:33:02.9390976Z           ]
2026-07-26T22:33:02.9391080Z         },
2026-07-26T22:33:02.9391185Z         "int": {
2026-07-26T22:33:02.9391333Z           "complete": true,
2026-07-26T22:33:02.9391442Z           "evidence": [
2026-07-26T22:33:02.9391541Z             {
2026-07-26T22:33:02.9391680Z               "path": "crates/spt-live/src/pulse.rs",
2026-07-26T22:33:02.9391780Z               "line": 161
2026-07-26T22:33:02.9391889Z             }
2026-07-26T22:33:02.9391985Z           ]
2026-07-26T22:33:02.9392137Z         },
2026-07-26T22:33:02.9392252Z         "unit": {
2026-07-26T22:33:02.9392410Z           "complete": true,
2026-07-26T22:33:02.9392619Z           "evidence": [
2026-07-26T22:33:02.9392733Z             {
2026-07-26T22:33:02.9392876Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:02.9392992Z               "line": 522
2026-07-26T22:33:02.9393091Z             },
2026-07-26T22:33:02.9393334Z             {
2026-07-26T22:33:02.9393477Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:02.9393598Z               "line": 564
2026-07-26T22:33:02.9393700Z             },
2026-07-26T22:33:02.9393800Z             {
2026-07-26T22:33:02.9393943Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:02.9394046Z               "line": 624
2026-07-26T22:33:02.9394150Z             },
2026-07-26T22:33:02.9394266Z             {
2026-07-26T22:33:02.9394389Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:02.9394494Z               "line": 660
2026-07-26T22:33:02.9394595Z             },
2026-07-26T22:33:02.9394694Z             {
2026-07-26T22:33:02.9394833Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:02.9394947Z               "line": 687
2026-07-26T22:33:02.9395138Z             },
2026-07-26T22:33:02.9395238Z             {
2026-07-26T22:33:02.9395376Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:02.9395501Z               "line": 763
2026-07-26T22:33:02.9395595Z             },
2026-07-26T22:33:02.9395700Z             {
2026-07-26T22:33:02.9395835Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:02.9395948Z               "line": 811
2026-07-26T22:33:02.9396044Z             }
2026-07-26T22:33:02.9396145Z           ]
2026-07-26T22:33:02.9396243Z         }
2026-07-26T22:33:02.9396344Z       }
2026-07-26T22:33:02.9396441Z     },
2026-07-26T22:33:02.9396549Z     {
2026-07-26T22:33:02.9396700Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-07-26T22:33:02.9397294Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-07-26T22:33:02.9397424Z       "requiredStages": [
2026-07-26T22:33:02.9397533Z         "impl",
2026-07-26T22:33:02.9397637Z         "unit"
2026-07-26T22:33:02.9397734Z       ],
2026-07-26T22:33:02.9397853Z       "stages": {
2026-07-26T22:33:02.9397943Z         "doc": {
2026-07-26T22:33:02.9398063Z           "complete": false,
2026-07-26T22:33:02.9398172Z           "evidence": []
2026-07-26T22:33:02.9398276Z         },
2026-07-26T22:33:02.9398383Z         "impl": {
2026-07-26T22:33:02.9398500Z           "complete": true,
2026-07-26T22:33:02.9398601Z           "evidence": [
2026-07-26T22:33:02.9398702Z             {
2026-07-26T22:33:02.9398849Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-07-26T22:33:02.9399045Z               "line": 22
2026-07-26T22:33:02.9399149Z             },
2026-07-26T22:33:02.9399253Z             {
2026-07-26T22:33:02.9399391Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:02.9399499Z               "line": 538
2026-07-26T22:33:02.9399599Z             },
2026-07-26T22:33:02.9399709Z             {
2026-07-26T22:33:02.9399856Z               "path": "crates/spt-live/src/reconcile.rs",
2026-07-26T22:33:02.9399972Z               "line": 17
2026-07-26T22:33:02.9400086Z             },
2026-07-26T22:33:02.9400204Z             {
2026-07-26T22:33:02.9400357Z               "path": "crates/spt-live/src/reconcile.rs",
2026-07-26T22:33:02.9400476Z               "line": 147
2026-07-26T22:33:02.9400582Z             },
2026-07-26T22:33:02.9400696Z             {
2026-07-26T22:33:02.9400848Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:02.9400963Z               "line": 252
2026-07-26T22:33:02.9401068Z             },
2026-07-26T22:33:02.9401182Z             {
2026-07-26T22:33:02.9401325Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:02.9401435Z               "line": 277
2026-07-26T22:33:02.9401541Z             },
2026-07-26T22:33:02.9401645Z             {
2026-07-26T22:33:02.9401797Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:02.9401912Z               "line": 303
2026-07-26T22:33:02.9402011Z             },
2026-07-26T22:33:02.9402110Z             {
2026-07-26T22:33:02.9402369Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-07-26T22:33:02.9402487Z               "line": 124
2026-07-26T22:33:02.9402589Z             },
2026-07-26T22:33:02.9402692Z             {
2026-07-26T22:33:02.9402836Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-07-26T22:33:02.9402950Z               "line": 224
2026-07-26T22:33:02.9403059Z             }
2026-07-26T22:33:02.9403161Z           ]
2026-07-26T22:33:02.9403260Z         },
2026-07-26T22:33:02.9403364Z         "int": {
2026-07-26T22:33:02.9403485Z           "complete": false,
2026-07-26T22:33:02.9403584Z           "evidence": []
2026-07-26T22:33:02.9403684Z         },
2026-07-26T22:33:02.9403786Z         "unit": {
2026-07-26T22:33:02.9403904Z           "complete": true,
2026-07-26T22:33:02.9407783Z           "evidence": [
2026-07-26T22:33:02.9408075Z             {
2026-07-26T22:33:02.9408251Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-07-26T22:33:02.9408374Z               "line": 69
2026-07-26T22:33:02.9408479Z             },
2026-07-26T22:33:02.9408584Z             {
2026-07-26T22:33:02.9408747Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-07-26T22:33:02.9408860Z               "line": 79
2026-07-26T22:33:02.9409056Z             },
2026-07-26T22:33:02.9409161Z             {
2026-07-26T22:33:02.9409323Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-07-26T22:33:02.9409438Z               "line": 91
2026-07-26T22:33:02.9409534Z             },
2026-07-26T22:33:02.9409634Z             {
2026-07-26T22:33:02.9409775Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-07-26T22:33:02.9409894Z               "line": 347
2026-07-26T22:33:02.9409997Z             },
2026-07-26T22:33:02.9410097Z             {
2026-07-26T22:33:02.9410240Z               "path": "crates/spt-live/src/reconcile.rs",
2026-07-26T22:33:02.9410364Z               "line": 281
2026-07-26T22:33:02.9410469Z             },
2026-07-26T22:33:02.9410570Z             {
2026-07-26T22:33:02.9410717Z               "path": "crates/spt-live/src/reconcile.rs",
2026-07-26T22:33:02.9410822Z               "line": 322
2026-07-26T22:33:02.9410922Z             },
2026-07-26T22:33:02.9411026Z             {
2026-07-26T22:33:02.9411166Z               "path": "crates/spt-live/src/reconcile.rs",
2026-07-26T22:33:02.9411275Z               "line": 360
2026-07-26T22:33:02.9411375Z             },
2026-07-26T22:33:02.9411476Z             {
2026-07-26T22:33:02.9411632Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:02.9411732Z               "line": 738
2026-07-26T22:33:02.9411838Z             },
2026-07-26T22:33:02.9411942Z             {
2026-07-26T22:33:02.9412086Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-07-26T22:33:02.9412186Z               "line": 397
2026-07-26T22:33:02.9412290Z             },
2026-07-26T22:33:02.9412396Z             {
2026-07-26T22:33:02.9412543Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-07-26T22:33:02.9412651Z               "line": 440
2026-07-26T22:33:02.9412752Z             }
2026-07-26T22:33:02.9412853Z           ]
2026-07-26T22:33:02.9412957Z         }
2026-07-26T22:33:02.9413057Z       }
2026-07-26T22:33:02.9413167Z     },
2026-07-26T22:33:02.9413272Z     {
2026-07-26T22:33:02.9413406Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-07-26T22:33:02.9413643Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-07-26T22:33:02.9413759Z       "requiredStages": [
2026-07-26T22:33:02.9413863Z         "impl",
2026-07-26T22:33:02.9413958Z         "unit"
2026-07-26T22:33:02.9414059Z       ],
2026-07-26T22:33:02.9414163Z       "stages": {
2026-07-26T22:33:02.9414263Z         "doc": {
2026-07-26T22:33:02.9414383Z           "complete": false,
2026-07-26T22:33:02.9414487Z           "evidence": []
2026-07-26T22:33:02.9414597Z         },
2026-07-26T22:33:02.9414698Z         "impl": {
2026-07-26T22:33:02.9414821Z           "complete": true,
2026-07-26T22:33:02.9414930Z           "evidence": [
2026-07-26T22:33:02.9415147Z             {
2026-07-26T22:33:02.9415285Z               "path": "crates/spt-term/src/reader.rs",
2026-07-26T22:33:02.9415395Z               "line": 254
2026-07-26T22:33:02.9415500Z             }
2026-07-26T22:33:02.9415604Z           ]
2026-07-26T22:33:02.9415706Z         },
2026-07-26T22:33:02.9415810Z         "int": {
2026-07-26T22:33:02.9415924Z           "complete": true,
2026-07-26T22:33:02.9416044Z           "evidence": [
2026-07-26T22:33:02.9416148Z             {
2026-07-26T22:33:02.9416292Z               "path": "crates/spt-term/tests/dsr.rs",
2026-07-26T22:33:02.9416411Z               "line": 45
2026-07-26T22:33:02.9416520Z             },
2026-07-26T22:33:02.9416616Z             {
2026-07-26T22:33:02.9416768Z               "path": "crates/spt-term/tests/dsr.rs",
2026-07-26T22:33:02.9416873Z               "line": 67
2026-07-26T22:33:02.9417083Z             }
2026-07-26T22:33:02.9417183Z           ]
2026-07-26T22:33:02.9417284Z         },
2026-07-26T22:33:02.9417402Z         "unit": {
2026-07-26T22:33:02.9417513Z           "complete": true,
2026-07-26T22:33:02.9417618Z           "evidence": [
2026-07-26T22:33:02.9417721Z             {
2026-07-26T22:33:02.9417864Z               "path": "crates/spt-term/src/reader.rs",
2026-07-26T22:33:02.9417968Z               "line": 309
2026-07-26T22:33:02.9418071Z             },
2026-07-26T22:33:02.9418177Z             {
2026-07-26T22:33:02.9418320Z               "path": "crates/spt-term/src/reader.rs",
2026-07-26T22:33:02.9418429Z               "line": 398
2026-07-26T22:33:02.9418540Z             },
2026-07-26T22:33:02.9418635Z             {
2026-07-26T22:33:02.9418772Z               "path": "crates/spt-term/src/reader.rs",
2026-07-26T22:33:02.9418883Z               "line": 464
2026-07-26T22:33:02.9419077Z             }
2026-07-26T22:33:02.9419178Z           ]
2026-07-26T22:33:02.9419282Z         }
2026-07-26T22:33:02.9419382Z       }
2026-07-26T22:33:02.9419489Z     },
2026-07-26T22:33:02.9419587Z     {
2026-07-26T22:33:02.9419755Z       "id": "REQ-HAZARD-CONTROL-STAMP-CONVERGENCE",
2026-07-26T22:33:02.9424247Z       "title": "Control/viewer stamps must CONVERGE to broker session-table truth for every session-backed endpoint, not merely edge-trigger — the UPWARD companion to the DOWNWARD edge-clear REQ-HAZARD-CONTROL-STAMP-LIFETIME (7.27); same 'stamps == broker truth' family. ROOT (F-026 stamp-gap, hall-b/ball-b): a picker-created endpoint's broker spawn become_controller->stamp_driven_by->set_controlled(true) fires BEFORE the adapter binds its perch (a fresh endpoint has no perch until claude boots + binds), so mutate_info returns NotFound and the edge stamp is SWALLOWED (let _); the adapter's bind then writes InfoJson::new with controlled:false DEFAULT and no later edge re-stamps -> the endpoint reads uncontrolled FOREVER while driven (the #3 display fix is correct but datum-starved on this creation path). FIX: the broker (SINGLE WRITER) re-asserts each live session's control/viewer stamps to session-table truth, DIVERGENCE-GATED (read info; compare driven_by/controlled/viewer_count; write ONLY on diff — no per-poll fsync storm), on the KIND_SESSIONS handler (piggyback: the daemon reconcile + picker poll it, so a fresh perch converges within one reconcile-poll window after bind = the BOUNDED window, no new timer). Event-on-input rejected (an idle controlled session like hall-b never converges). Writes run OFF the log lock (snapshot truth under the lock, converge off it) per the lock-across-effect discipline (KH 7.12/5.16).",
2026-07-26T22:33:02.9424418Z       "requiredStages": [
2026-07-26T22:33:02.9424527Z         "doc",
2026-07-26T22:33:02.9424629Z         "impl",
2026-07-26T22:33:02.9424733Z         "unit",
2026-07-26T22:33:02.9424833Z         "int"
2026-07-26T22:33:02.9424935Z       ],
2026-07-26T22:33:02.9425043Z       "stages": {
2026-07-26T22:33:02.9425143Z         "doc": {
2026-07-26T22:33:02.9425278Z           "complete": true,
2026-07-26T22:33:02.9425391Z           "evidence": [
2026-07-26T22:33:02.9425499Z             {
2026-07-26T22:33:02.9425759Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9425865Z               "line": 583
2026-07-26T22:33:02.9425965Z             }
2026-07-26T22:33:02.9426079Z           ]
2026-07-26T22:33:02.9426179Z         },
2026-07-26T22:33:02.9426285Z         "impl": {
2026-07-26T22:33:02.9426389Z           "complete": true,
2026-07-26T22:33:02.9426494Z           "evidence": [
2026-07-26T22:33:02.9426599Z             {
2026-07-26T22:33:02.9426755Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9426857Z               "line": 904
2026-07-26T22:33:02.9426956Z             },
2026-07-26T22:33:02.9427042Z             {
2026-07-26T22:33:02.9427181Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9427290Z               "line": 965
2026-07-26T22:33:02.9427390Z             },
2026-07-26T22:33:02.9427605Z             {
2026-07-26T22:33:02.9427753Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9427877Z               "line": 4345
2026-07-26T22:33:02.9427977Z             }
2026-07-26T22:33:02.9428078Z           ]
2026-07-26T22:33:02.9428174Z         },
2026-07-26T22:33:02.9428276Z         "int": {
2026-07-26T22:33:02.9428390Z           "complete": true,
2026-07-26T22:33:02.9428495Z           "evidence": [
2026-07-26T22:33:02.9428598Z             {
2026-07-26T22:33:02.9428784Z               "path": "crates/spt-daemon/tests/control_stamp_lifetime.rs",
2026-07-26T22:33:02.9428890Z               "line": 285
2026-07-26T22:33:02.9429080Z             },
2026-07-26T22:33:02.9429170Z             {
2026-07-26T22:33:02.9429346Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-07-26T22:33:02.9429462Z               "line": 346
2026-07-26T22:33:02.9429566Z             }
2026-07-26T22:33:02.9429666Z           ]
2026-07-26T22:33:02.9429772Z         },
2026-07-26T22:33:02.9429872Z         "unit": {
2026-07-26T22:33:02.9429995Z           "complete": true,
2026-07-26T22:33:02.9430101Z           "evidence": [
2026-07-26T22:33:02.9430215Z             {
2026-07-26T22:33:02.9430358Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9430476Z               "line": 6127
2026-07-26T22:33:02.9430567Z             }
2026-07-26T22:33:02.9430669Z           ]
2026-07-26T22:33:02.9430768Z         }
2026-07-26T22:33:02.9430872Z       }
2026-07-26T22:33:02.9430972Z     },
2026-07-26T22:33:02.9431072Z     {
2026-07-26T22:33:02.9431212Z       "id": "REQ-HAZARD-CONTROL-STAMP-LIFETIME",
2026-07-26T22:33:02.9433781Z       "title": "#2: a control/viewer stamp never outlives its session — every teardown path clears what attach stamped. The broker exit-waiter (broker.rs ~:1844) sends the exit frame + sessions.remove(&id) but does NOT clear the perch's controller/viewer stamps; clear_controller()->stamp_driven_by() (clears driven_by+controlled) runs ONLY on controller-detach/evict/displace. /exit kills the CHILD not the controller conn, so the OutputLog drops with controlled:true, viewer_count, (and driven_by for a remote controller) latched in info.json forever — and hfenduleam keeps gossiping controller_node=self cross-node. Fix: on session reap, clear the perch's controller/viewer stamps (set_driven_by(None)+set_controlled(false)+set_viewer_count(0) via the known endpoint id) — broker stays the single writer. KNOWN-HAZARDS invariant. See docs/NEXT-MILESTONE-PICKER-TRIAGE.md #2.",
2026-07-26T22:33:02.9433935Z       "requiredStages": [
2026-07-26T22:33:02.9434039Z         "doc",
2026-07-26T22:33:02.9434139Z         "impl",
2026-07-26T22:33:02.9434240Z         "int"
2026-07-26T22:33:02.9434344Z       ],
2026-07-26T22:33:02.9434444Z       "stages": {
2026-07-26T22:33:02.9434550Z         "doc": {
2026-07-26T22:33:02.9434664Z           "complete": true,
2026-07-26T22:33:02.9434768Z           "evidence": [
2026-07-26T22:33:02.9434870Z             {
2026-07-26T22:33:02.9435087Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9435185Z               "line": 564
2026-07-26T22:33:02.9435432Z             }
2026-07-26T22:33:02.9435532Z           ]
2026-07-26T22:33:02.9435636Z         },
2026-07-26T22:33:02.9435737Z         "impl": {
2026-07-26T22:33:02.9435847Z           "complete": true,
2026-07-26T22:33:02.9435956Z           "evidence": [
2026-07-26T22:33:02.9436064Z             {
2026-07-26T22:33:02.9436207Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9436319Z               "line": 2277
2026-07-26T22:33:02.9436425Z             },
2026-07-26T22:33:02.9436530Z             {
2026-07-26T22:33:02.9436672Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9436787Z               "line": 4812
2026-07-26T22:33:02.9436892Z             }
2026-07-26T22:33:02.9436996Z           ]
2026-07-26T22:33:02.9437098Z         },
2026-07-26T22:33:02.9437202Z         "int": {
2026-07-26T22:33:02.9437422Z           "complete": true,
2026-07-26T22:33:02.9437536Z           "evidence": [
2026-07-26T22:33:02.9437640Z             {
2026-07-26T22:33:02.9437831Z               "path": "crates/spt-daemon/tests/control_stamp_lifetime.rs",
2026-07-26T22:33:02.9437945Z               "line": 209
2026-07-26T22:33:02.9438042Z             }
2026-07-26T22:33:02.9438146Z           ]
2026-07-26T22:33:02.9438246Z         },
2026-07-26T22:33:02.9438338Z         "unit": {
2026-07-26T22:33:02.9438447Z           "complete": false,
2026-07-26T22:33:02.9438561Z           "evidence": []
2026-07-26T22:33:02.9438662Z         }
2026-07-26T22:33:02.9438766Z       }
2026-07-26T22:33:02.9438869Z     },
2026-07-26T22:33:02.9439036Z     {
2026-07-26T22:33:02.9439182Z       "id": "REQ-HAZARD-CONTROLLER-GAP-RESUME",
2026-07-26T22:33:02.9445887Z       "title": "A serving CONTROLLER whose serve-brain hits a b4 drop-don't-block FORWARD output gap must RESUME-FROM-FLOOR (re-subscribe from delivered_through and re-fetch the dropped frames from the ring), NOT snap-above and NOT fatal. ROOT (v0.13.0 forkpty re-run, post-keystone): b4 made the controller a non-blocking try_send that DROPS frames when its bounded channel fills (a controller that falls behind its OWN echo under a hard flood), so the next read is a forward gap the strict reject-gap (brain.rs:624/628, B2 exactly-once) FATALS — wedged_viewer_does_not_stall_controller (attach.rs:1048) drove ctrl.read_event() raw and fataled on `output gap got 6134 want 4643`. Pre-b4 the inline sleep-poll BLOCKED the drain to the controller's rate (no drops, no gaps); this is a b4 SIDE-EFFECT, not a new class. A controller CANNOT snap (it is authoritative — advances delivered_through; skipping rolled frames = not-exactly-once = B2 violation), so REQ-HAZARD-VIEWER-RING-ROLL-SNAP does NOT apply. B2 INVARIANT (doyle, broker.rs:327-330): the ring trim is delivered_through-BLIND (`while ring.len() > cap_chunks { pop_front() }`), so re-fetch is exactly-once IFF tail - delivered_through <= cap_chunks (4096) — NOT guaranteed in general, but the common case (burst < ring; wedged_viewer ~1492 < 4096) holds. FIX: serve_attach catches the output-gap on the controller path (does not ?-propagate) and re-subscribes from Brain::controller_resume_floor (= delivered_through = the gap's `want`; NO mid-stream KIND_SESSIONS round-trip — sessions() loops on read_event and would re-fatal on the same gap + discard Output); the broker replays the dropped frames. The IRRECOVERABLE edge (floor unchanged across two resumes = ring rolled past delivered_through = frames gone) surfaces a MARKED truncation to the operator (never silent-skip = B2 lie, never spin) and ends cleanly — full graceful handling deferred to REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND. Do NOT make the ring trim delivered_through-aware (that risks an unbounded ring under a stuck controller; the 5s eviction + 4096 ring is the practical bound). (v0.13.0)",
2026-07-26T22:33:02.9446074Z       "requiredStages": [
2026-07-26T22:33:02.9446172Z         "impl",
2026-07-26T22:33:02.9446287Z         "unit",
2026-07-26T22:33:02.9446384Z         "int"
2026-07-26T22:33:02.9446482Z       ],
2026-07-26T22:33:02.9446586Z       "stages": {
2026-07-26T22:33:02.9446813Z         "doc": {
2026-07-26T22:33:02.9446927Z           "complete": false,
2026-07-26T22:33:02.9447042Z           "evidence": []
2026-07-26T22:33:02.9447142Z         },
2026-07-26T22:33:02.9447241Z         "impl": {
2026-07-26T22:33:02.9447352Z           "complete": true,
2026-07-26T22:33:02.9447471Z           "evidence": [
2026-07-26T22:33:02.9447580Z             {
2026-07-26T22:33:02.9447743Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:02.9447852Z               "line": 110
2026-07-26T22:33:02.9447954Z             },
2026-07-26T22:33:02.9448053Z             {
2026-07-26T22:33:02.9448200Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:02.9448311Z               "line": 157
2026-07-26T22:33:02.9448415Z             },
2026-07-26T22:33:02.9448519Z             {
2026-07-26T22:33:02.9448773Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:02.9448878Z               "line": 398
2026-07-26T22:33:02.9449054Z             },
2026-07-26T22:33:02.9449149Z             {
2026-07-26T22:33:02.9449303Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.9449411Z               "line": 1267
2026-07-26T22:33:02.9449506Z             }
2026-07-26T22:33:02.9449606Z           ]
2026-07-26T22:33:02.9449709Z         },
2026-07-26T22:33:02.9449808Z         "int": {
2026-07-26T22:33:02.9449924Z           "complete": true,
2026-07-26T22:33:02.9450024Z           "evidence": [
2026-07-26T22:33:02.9450123Z             {
2026-07-26T22:33:02.9450277Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:02.9450381Z               "line": 1205
2026-07-26T22:33:02.9450491Z             }
2026-07-26T22:33:02.9450591Z           ]
2026-07-26T22:33:02.9450691Z         },
2026-07-26T22:33:02.9450791Z         "unit": {
2026-07-26T22:33:02.9450916Z           "complete": true,
2026-07-26T22:33:02.9451025Z           "evidence": [
2026-07-26T22:33:02.9451130Z             {
2026-07-26T22:33:02.9451268Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.9451392Z               "line": 2231
2026-07-26T22:33:02.9451493Z             },
2026-07-26T22:33:02.9451602Z             {
2026-07-26T22:33:02.9451736Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9451855Z               "line": 8232
2026-07-26T22:33:02.9451959Z             }
2026-07-26T22:33:02.9452063Z           ]
2026-07-26T22:33:02.9452163Z         }
2026-07-26T22:33:02.9452266Z       }
2026-07-26T22:33:02.9452366Z     },
2026-07-26T22:33:02.9452466Z     {
2026-07-26T22:33:02.9452632Z       "id": "REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND",
2026-07-26T22:33:02.9455526Z       "title": "DEFERRED EDGE of REQ-HAZARD-CONTROLLER-GAP-RESUME: when a serving controller falls behind the live ring FURTHER than the ring holds (tail - delivered_through > cap_chunks, the ring trim being delivered_through-blind, broker.rs:327-330), the dropped frames have rolled OUT of the ring and an exactly-once re-fetch is IMPOSSIBLE. v0.13.0 DETECTS this (resume floor unchanged across two consecutive resumes) and surfaces a MARKED truncation notice to the operator then ends the attach cleanly — it never silent-skips (a B2 lie) and never spins. FULL graceful handling (a clearly-marked snap-with-data-loss that keeps the operator on the live tail, or a structured truncation record the rc renders distinctly, plus the controller-too-slow + ring-too-small backpressure/sizing policy) is DEFERRED — staging it needs a netsplit / deep-behind harness (the in-process loopback rig keeps up; wedged_viewer's gap is recoverable at ~1492 < 4096). (v0.13.0+)",
2026-07-26T22:33:02.9455666Z       "requiredStages": [],
2026-07-26T22:33:02.9455761Z       "stages": {
2026-07-26T22:33:02.9455860Z         "doc": {
2026-07-26T22:33:02.9455976Z           "complete": false,
2026-07-26T22:33:02.9456089Z           "evidence": []
2026-07-26T22:33:02.9456189Z         },
2026-07-26T22:33:02.9456300Z         "impl": {
2026-07-26T22:33:02.9456413Z           "complete": false,
2026-07-26T22:33:02.9456629Z           "evidence": []
2026-07-26T22:33:02.9456727Z         },
2026-07-26T22:33:02.9456833Z         "int": {
2026-07-26T22:33:02.9456944Z           "complete": false,
2026-07-26T22:33:02.9457061Z           "evidence": []
2026-07-26T22:33:02.9457156Z         },
2026-07-26T22:33:02.9457261Z         "unit": {
2026-07-26T22:33:02.9457369Z           "complete": false,
2026-07-26T22:33:02.9457482Z           "evidence": []
2026-07-26T22:33:02.9457583Z         }
2026-07-26T22:33:02.9457693Z       }
2026-07-26T22:33:02.9457778Z     },
2026-07-26T22:33:02.9457884Z     {
2026-07-26T22:33:02.9458012Z       "id": "REQ-HAZARD-CONTROLLER-LEASE",
2026-07-26T22:33:02.9460941Z       "title": "RC-RENDER-TRUTH W2 (KNOWN-HAZARDS 7.48 — umbrella conformance seam for ADR-0044): at most one input-capable controller lease per PTY session; takeover revokes atomically and loudly; input is fenced to the active lease; node identity is never a lease. The full hertz 8-step deterministic two-loopback-client broker regression rides verbatim: A subscribes Control from node N and controls; B subscribes Take from the SAME node with a different lease; A receives Displaced{by:N} then terminal stream completion (rc exits via existing PumpEnd::Displaced); output post-takeover reaches B not A; A's Input+Resize post-takeover mutate nothing; B's both apply; controlled/driven_by metadata identifies B with exactly one controller slot; a separate equal-lease/equal-generation replay test proves genuine dispatcher recovery remains silent and never self-displaces. Gate: int — the matrix; doc — KNOWN-HAZARDS 7.48.",
2026-07-26T22:33:02.9461199Z       "requiredStages": [
2026-07-26T22:33:02.9461308Z         "doc",
2026-07-26T22:33:02.9461414Z         "int"
2026-07-26T22:33:02.9461518Z       ],
2026-07-26T22:33:02.9461613Z       "stages": {
2026-07-26T22:33:02.9461715Z         "doc": {
2026-07-26T22:33:02.9461838Z           "complete": true,
2026-07-26T22:33:02.9461947Z           "evidence": [
2026-07-26T22:33:02.9462039Z             {
2026-07-26T22:33:02.9462185Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9462286Z               "line": 727
2026-07-26T22:33:02.9462387Z             }
2026-07-26T22:33:02.9462491Z           ]
2026-07-26T22:33:02.9462594Z         },
2026-07-26T22:33:02.9462695Z         "impl": {
2026-07-26T22:33:02.9462812Z           "complete": false,
2026-07-26T22:33:02.9462916Z           "evidence": []
2026-07-26T22:33:02.9463012Z         },
2026-07-26T22:33:02.9463113Z         "int": {
2026-07-26T22:33:02.9463226Z           "complete": true,
2026-07-26T22:33:02.9463327Z           "evidence": [
2026-07-26T22:33:02.9463422Z             {
2026-07-26T22:33:02.9463593Z               "path": "crates/spt-daemon/tests/controller_lease.rs",
2026-07-26T22:33:02.9463709Z               "line": 256
2026-07-26T22:33:02.9463804Z             },
2026-07-26T22:33:02.9463908Z             {
2026-07-26T22:33:02.9464071Z               "path": "crates/spt-daemon/tests/controller_lease.rs",
2026-07-26T22:33:02.9464199Z               "line": 350
2026-07-26T22:33:02.9464300Z             },
2026-07-26T22:33:02.9464399Z             {
2026-07-26T22:33:02.9464562Z               "path": "crates/spt-daemon/tests/controller_lease.rs",
2026-07-26T22:33:02.9464672Z               "line": 415
2026-07-26T22:33:02.9464767Z             },
2026-07-26T22:33:02.9464863Z             {
2026-07-26T22:33:02.9465020Z               "path": "crates/spt-daemon/tests/controller_lease.rs",
2026-07-26T22:33:02.9465134Z               "line": 494
2026-07-26T22:33:02.9465235Z             }
2026-07-26T22:33:02.9465339Z           ]
2026-07-26T22:33:02.9465438Z         },
2026-07-26T22:33:02.9465538Z         "unit": {
2026-07-26T22:33:02.9465644Z           "complete": false,
2026-07-26T22:33:02.9465762Z           "evidence": []
2026-07-26T22:33:02.9465853Z         }
2026-07-26T22:33:02.9465958Z       }
2026-07-26T22:33:02.9466067Z     },
2026-07-26T22:33:02.9466158Z     {
2026-07-26T22:33:02.9466301Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-07-26T22:33:02.9470801Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-07-26T22:33:02.9471073Z       "requiredStages": [],
2026-07-26T22:33:02.9471182Z       "stages": {
2026-07-26T22:33:02.9471287Z         "doc": {
2026-07-26T22:33:02.9471397Z           "complete": false,
2026-07-26T22:33:02.9471506Z           "evidence": []
2026-07-26T22:33:02.9471611Z         },
2026-07-26T22:33:02.9471731Z         "impl": {
2026-07-26T22:33:02.9471854Z           "complete": false,
2026-07-26T22:33:02.9471970Z           "evidence": []
2026-07-26T22:33:02.9472064Z         },
2026-07-26T22:33:02.9472159Z         "int": {
2026-07-26T22:33:02.9472275Z           "complete": false,
2026-07-26T22:33:02.9472388Z           "evidence": []
2026-07-26T22:33:02.9472488Z         },
2026-07-26T22:33:02.9472590Z         "unit": {
2026-07-26T22:33:02.9472708Z           "complete": false,
2026-07-26T22:33:02.9472827Z           "evidence": []
2026-07-26T22:33:02.9472924Z         }
2026-07-26T22:33:02.9473023Z       }
2026-07-26T22:33:02.9473126Z     },
2026-07-26T22:33:02.9473221Z     {
2026-07-26T22:33:02.9473372Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-07-26T22:33:02.9487202Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-07-26T22:33:02.9487675Z       "requiredStages": [
2026-07-26T22:33:02.9487779Z         "doc",
2026-07-26T22:33:02.9487893Z         "impl",
2026-07-26T22:33:02.9487990Z         "unit",
2026-07-26T22:33:02.9488093Z         "int"
2026-07-26T22:33:02.9488184Z       ],
2026-07-26T22:33:02.9488295Z       "stages": {
2026-07-26T22:33:02.9488394Z         "doc": {
2026-07-26T22:33:02.9488513Z           "complete": true,
2026-07-26T22:33:02.9488624Z           "evidence": [
2026-07-26T22:33:02.9488723Z             {
2026-07-26T22:33:02.9488864Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9489068Z               "line": 505
2026-07-26T22:33:02.9489168Z             }
2026-07-26T22:33:02.9489263Z           ]
2026-07-26T22:33:02.9489365Z         },
2026-07-26T22:33:02.9489583Z         "impl": {
2026-07-26T22:33:02.9489702Z           "complete": true,
2026-07-26T22:33:02.9489816Z           "evidence": [
2026-07-26T22:33:02.9489913Z             {
2026-07-26T22:33:02.9490059Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.9490160Z               "line": 455
2026-07-26T22:33:02.9490265Z             },
2026-07-26T22:33:02.9490374Z             {
2026-07-26T22:33:02.9490523Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.9490641Z               "line": 1943
2026-07-26T22:33:02.9490736Z             },
2026-07-26T22:33:02.9490838Z             {
2026-07-26T22:33:02.9490984Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9491099Z               "line": 2537
2026-07-26T22:33:02.9491205Z             }
2026-07-26T22:33:02.9491414Z           ]
2026-07-26T22:33:02.9491511Z         },
2026-07-26T22:33:02.9491618Z         "int": {
2026-07-26T22:33:02.9491736Z           "complete": true,
2026-07-26T22:33:02.9491856Z           "evidence": [
2026-07-26T22:33:02.9491963Z             {
2026-07-26T22:33:02.9492116Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:02.9492217Z               "line": 1360
2026-07-26T22:33:02.9492321Z             },
2026-07-26T22:33:02.9492422Z             {
2026-07-26T22:33:02.9492579Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:02.9492683Z               "line": 1461
2026-07-26T22:33:02.9492790Z             },
2026-07-26T22:33:02.9492889Z             {
2026-07-26T22:33:02.9493037Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-07-26T22:33:02.9493142Z               "line": 1216
2026-07-26T22:33:02.9493246Z             }
2026-07-26T22:33:02.9493346Z           ]
2026-07-26T22:33:02.9493452Z         },
2026-07-26T22:33:02.9493556Z         "unit": {
2026-07-26T22:33:02.9493681Z           "complete": true,
2026-07-26T22:33:02.9493781Z           "evidence": [
2026-07-26T22:33:02.9493890Z             {
2026-07-26T22:33:02.9494024Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9494152Z               "line": 8085
2026-07-26T22:33:02.9494251Z             }
2026-07-26T22:33:02.9494356Z           ]
2026-07-26T22:33:02.9494455Z         }
2026-07-26T22:33:02.9494554Z       }
2026-07-26T22:33:02.9494654Z     },
2026-07-26T22:33:02.9494755Z     {
2026-07-26T22:33:02.9494897Z       "id": "REQ-HAZARD-CORRUPT-PERCH-COHERENCE",
2026-07-26T22:33:02.9495370Z       "title": "Corrupt (present-but-unparseable) info.json is NOT absent: liveness/status readers agree a destroyed record is neither alive nor Active (counter-39 #2)",
2026-07-26T22:33:02.9495479Z       "requiredStages": [
2026-07-26T22:33:02.9495589Z         "impl",
2026-07-26T22:33:02.9495699Z         "unit"
2026-07-26T22:33:02.9495799Z       ],
2026-07-26T22:33:02.9495913Z       "stages": {
2026-07-26T22:33:02.9496009Z         "doc": {
2026-07-26T22:33:02.9496137Z           "complete": true,
2026-07-26T22:33:02.9496243Z           "evidence": [
2026-07-26T22:33:02.9496357Z             {
2026-07-26T22:33:02.9496485Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9496596Z               "line": 271
2026-07-26T22:33:02.9496700Z             }
2026-07-26T22:33:02.9496800Z           ]
2026-07-26T22:33:02.9496901Z         },
2026-07-26T22:33:02.9497005Z         "impl": {
2026-07-26T22:33:02.9497123Z           "complete": true,
2026-07-26T22:33:02.9497238Z           "evidence": [
2026-07-26T22:33:02.9497339Z             {
2026-07-26T22:33:02.9497505Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:02.9497601Z               "line": 946
2026-07-26T22:33:02.9497710Z             },
2026-07-26T22:33:02.9497814Z             {
2026-07-26T22:33:02.9497963Z               "path": "crates/spt-store/src/liveness.rs",
2026-07-26T22:33:02.9498072Z               "line": 135
2026-07-26T22:33:02.9498187Z             },
2026-07-26T22:33:02.9498292Z             {
2026-07-26T22:33:02.9498429Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:02.9498625Z               "line": 73
2026-07-26T22:33:02.9498739Z             }
2026-07-26T22:33:02.9498841Z           ]
2026-07-26T22:33:02.9499011Z         },
2026-07-26T22:33:02.9499117Z         "int": {
2026-07-26T22:33:02.9499236Z           "complete": false,
2026-07-26T22:33:02.9499349Z           "evidence": []
2026-07-26T22:33:02.9499454Z         },
2026-07-26T22:33:02.9499563Z         "unit": {
2026-07-26T22:33:02.9499680Z           "complete": true,
2026-07-26T22:33:02.9499795Z           "evidence": [
2026-07-26T22:33:02.9499901Z             {
2026-07-26T22:33:02.9500057Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:02.9500173Z               "line": 2137
2026-07-26T22:33:02.9500277Z             },
2026-07-26T22:33:02.9500381Z             {
2026-07-26T22:33:02.9500634Z               "path": "crates/spt-store/src/liveness.rs",
2026-07-26T22:33:02.9500740Z               "line": 266
2026-07-26T22:33:02.9500835Z             },
2026-07-26T22:33:02.9500949Z             {
2026-07-26T22:33:02.9501074Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:02.9501192Z               "line": 239
2026-07-26T22:33:02.9501292Z             }
2026-07-26T22:33:02.9501403Z           ]
2026-07-26T22:33:02.9501502Z         }
2026-07-26T22:33:02.9501606Z       }
2026-07-26T22:33:02.9501704Z     },
2026-07-26T22:33:02.9501808Z     {
2026-07-26T22:33:02.9501945Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-07-26T22:33:02.9502407Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-07-26T22:33:02.9502523Z       "requiredStages": [
2026-07-26T22:33:02.9502628Z         "impl",
2026-07-26T22:33:02.9502734Z         "unit",
2026-07-26T22:33:02.9502843Z         "int"
2026-07-26T22:33:02.9502947Z       ],
2026-07-26T22:33:02.9503049Z       "stages": {
2026-07-26T22:33:02.9503163Z         "doc": {
2026-07-26T22:33:02.9503282Z           "complete": false,
2026-07-26T22:33:02.9503396Z           "evidence": []
2026-07-26T22:33:02.9503487Z         },
2026-07-26T22:33:02.9503597Z         "impl": {
2026-07-26T22:33:02.9503711Z           "complete": true,
2026-07-26T22:33:02.9503830Z           "evidence": [
2026-07-26T22:33:02.9503931Z             {
2026-07-26T22:33:02.9504092Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.9504193Z               "line": 573
2026-07-26T22:33:02.9504303Z             },
2026-07-26T22:33:02.9504402Z             {
2026-07-26T22:33:02.9504546Z               "path": "crates/spt-msg/src/deliver.rs",
2026-07-26T22:33:02.9504652Z               "line": 79
2026-07-26T22:33:02.9504750Z             },
2026-07-26T22:33:02.9504844Z             {
2026-07-26T22:33:02.9504987Z               "path": "crates/spt-msg/src/ring.rs",
2026-07-26T22:33:02.9505100Z               "line": 52
2026-07-26T22:33:02.9505205Z             },
2026-07-26T22:33:02.9505306Z             {
2026-07-26T22:33:02.9505448Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9505553Z               "line": 343
2026-07-26T22:33:02.9505663Z             },
2026-07-26T22:33:02.9505777Z             {
2026-07-26T22:33:02.9505944Z               "path": "crates/spt-store/src/liveness.rs",
2026-07-26T22:33:02.9506053Z               "line": 27
2026-07-26T22:33:02.9506154Z             },
2026-07-26T22:33:02.9506254Z             {
2026-07-26T22:33:02.9506401Z               "path": "crates/spt-store/src/liveness.rs",
2026-07-26T22:33:02.9506512Z               "line": 134
2026-07-26T22:33:02.9506616Z             },
2026-07-26T22:33:02.9506716Z             {
2026-07-26T22:33:02.9506880Z               "path": "crates/spt-store/src/liveness.rs",
2026-07-26T22:33:02.9506978Z               "line": 159
2026-07-26T22:33:02.9507083Z             },
2026-07-26T22:33:02.9507199Z             {
2026-07-26T22:33:02.9507336Z               "path": "crates/spt-store/src/registry.rs",
2026-07-26T22:33:02.9507447Z               "line": 116
2026-07-26T22:33:02.9507669Z             }
2026-07-26T22:33:02.9507769Z           ]
2026-07-26T22:33:02.9507870Z         },
2026-07-26T22:33:02.9507984Z         "int": {
2026-07-26T22:33:02.9508088Z           "complete": true,
2026-07-26T22:33:02.9508204Z           "evidence": [
2026-07-26T22:33:02.9508303Z             {
2026-07-26T22:33:02.9508466Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-07-26T22:33:02.9508580Z               "line": 43
2026-07-26T22:33:02.9508674Z             }
2026-07-26T22:33:02.9508772Z           ]
2026-07-26T22:33:02.9508880Z         },
2026-07-26T22:33:02.9509057Z         "unit": {
2026-07-26T22:33:02.9509167Z           "complete": true,
2026-07-26T22:33:02.9509266Z           "evidence": [
2026-07-26T22:33:02.9509372Z             {
2026-07-26T22:33:02.9509524Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9509777Z               "line": 844
2026-07-26T22:33:02.9509886Z             },
2026-07-26T22:33:02.9510004Z             {
2026-07-26T22:33:02.9510151Z               "path": "crates/spt-store/src/liveness.rs",
2026-07-26T22:33:02.9510264Z               "line": 184
2026-07-26T22:33:02.9510360Z             },
2026-07-26T22:33:02.9510466Z             {
2026-07-26T22:33:02.9510607Z               "path": "crates/spt-store/src/liveness.rs",
2026-07-26T22:33:02.9510723Z               "line": 203
2026-07-26T22:33:02.9510822Z             },
2026-07-26T22:33:02.9510927Z             {
2026-07-26T22:33:02.9511066Z               "path": "crates/spt-store/src/liveness.rs",
2026-07-26T22:33:02.9511185Z               "line": 220
2026-07-26T22:33:02.9511285Z             },
2026-07-26T22:33:02.9511385Z             {
2026-07-26T22:33:02.9511527Z               "path": "crates/spt-store/src/liveness.rs",
2026-07-26T22:33:02.9511639Z               "line": 247
2026-07-26T22:33:02.9511743Z             },
2026-07-26T22:33:02.9511842Z             {
2026-07-26T22:33:02.9511982Z               "path": "crates/spt-store/src/liveness.rs",
2026-07-26T22:33:02.9512090Z               "line": 348
2026-07-26T22:33:02.9512190Z             },
2026-07-26T22:33:02.9512292Z             {
2026-07-26T22:33:02.9512433Z               "path": "crates/spt-store/src/registry.rs",
2026-07-26T22:33:02.9512549Z               "line": 229
2026-07-26T22:33:02.9512655Z             }
2026-07-26T22:33:02.9512753Z           ]
2026-07-26T22:33:02.9512852Z         }
2026-07-26T22:33:02.9512952Z       }
2026-07-26T22:33:02.9513056Z     },
2026-07-26T22:33:02.9513150Z     {
2026-07-26T22:33:02.9513318Z       "id": "REQ-HAZARD-DAEMON-IDENTITY-ENV-SANITIZE",
2026-07-26T22:33:02.9519168Z       "title": "MSG-IDENTITY W1 / F-036 leg a (perri field RCA 2026-07-09/10, psyche seat-theft — doyle ACCEPTED primary fix): the daemon MUST sanitize inherited per-session identity env (SPT_ENDPOINT_ID / OWL_SESSION_ID / SPT_AGENT_ID) at startup AND before EVERY role spawn — these are per-session identity and are NEVER correct inherited state for a daemon or its role children. ROOT: a daemon restarted from inside an agent session (routine during core dev / `spt update apply`) carries the session's SPT_ENDPOINT_ID and passes it verbatim to every [session.psyche_resume] spawn; core only strips each role's DECLARED env_remove list (runtime.rs:728), so ONE adapter env_remove miss infects the whole node — every psyche claude turn fires SessionStart, the adapter hook sees the endpoint id, takes the bind path, and ROTATES the victim's perch to the psyche's own sid with a valid prior-sid proof, every pulse (field: lia/deployah/doyle psyches ALL briefed as <sptc-active-perch id=doyle>; 37 peer msgs drained into lia's psyche transcript; victim deliveries eaten, communes dark, sends downgraded from:cli@node). Adapter half FIXED v0.18.8 (env_remove += SPT_ENDPOINT_ID + shim scrub + SPT_PSYCHE_TURN hook-bail) — this REQ is the CORE-LAYER defense so no adapter miss can ever leak identity again. FOLD (F-036 leg b docs-fix, doyle-owned): broaden the recursion_guard_env schema description (manifest.rs:314 + crates/spt-runtime/manifest.schema.json:306) — core honors it on ANY role declaring the field (runtime.rs:740, keyed on the FIELD not the role name); drop the 'summarizer children' wording (perri adopted on both psyche roles v0.18.8, proven live). Gate: a daemon started with SPT_ENDPOINT_ID/OWL_SESSION_ID/SPT_AGENT_ID in its env spawns role children WITHOUT those vars (unit: role-spawn env assembly scrubs the identity set regardless of the role's declared env_remove); KNOWN-HAZARDS entry on landing. Kin psyche-custody/session-pin cluster, [[spt-core-findings-backlog]] F-036.",
2026-07-26T22:33:02.9519426Z       "requiredStages": [
2026-07-26T22:33:02.9519526Z         "doc",
2026-07-26T22:33:02.9519627Z         "impl",
2026-07-26T22:33:02.9519727Z         "unit"
2026-07-26T22:33:02.9519826Z       ],
2026-07-26T22:33:02.9519927Z       "stages": {
2026-07-26T22:33:02.9520122Z         "doc": {
2026-07-26T22:33:02.9520237Z           "complete": true,
2026-07-26T22:33:02.9520356Z           "evidence": [
2026-07-26T22:33:02.9520460Z             {
2026-07-26T22:33:02.9520598Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9520702Z               "line": 656
2026-07-26T22:33:02.9520805Z             }
2026-07-26T22:33:02.9520901Z           ]
2026-07-26T22:33:02.9521011Z         },
2026-07-26T22:33:02.9521115Z         "impl": {
2026-07-26T22:33:02.9521235Z           "complete": true,
2026-07-26T22:33:02.9521344Z           "evidence": [
2026-07-26T22:33:02.9521449Z             {
2026-07-26T22:33:02.9521598Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9521711Z               "line": 53
2026-07-26T22:33:02.9521811Z             },
2026-07-26T22:33:02.9521917Z             {
2026-07-26T22:33:02.9522060Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9522174Z               "line": 384
2026-07-26T22:33:02.9522284Z             },
2026-07-26T22:33:02.9522393Z             {
2026-07-26T22:33:02.9522537Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.9522660Z               "line": 44
2026-07-26T22:33:02.9522755Z             },
2026-07-26T22:33:02.9522862Z             {
2026-07-26T22:33:02.9522998Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.9523109Z               "line": 58
2026-07-26T22:33:02.9523210Z             },
2026-07-26T22:33:02.9523308Z             {
2026-07-26T22:33:02.9523451Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.9523564Z               "line": 72
2026-07-26T22:33:02.9523663Z             },
2026-07-26T22:33:02.9523758Z             {
2026-07-26T22:33:02.9523897Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.9524010Z               "line": 83
2026-07-26T22:33:02.9524107Z             },
2026-07-26T22:33:02.9524207Z             {
2026-07-26T22:33:02.9524339Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.9524450Z               "line": 813
2026-07-26T22:33:02.9524550Z             }
2026-07-26T22:33:02.9524659Z           ]
2026-07-26T22:33:02.9524765Z         },
2026-07-26T22:33:02.9524874Z         "int": {
2026-07-26T22:33:02.9524988Z           "complete": false,
2026-07-26T22:33:02.9525109Z           "evidence": []
2026-07-26T22:33:02.9525217Z         },
2026-07-26T22:33:02.9525313Z         "unit": {
2026-07-26T22:33:02.9525433Z           "complete": true,
2026-07-26T22:33:02.9525541Z           "evidence": [
2026-07-26T22:33:02.9525632Z             {
2026-07-26T22:33:02.9525781Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.9525893Z               "line": 1301
2026-07-26T22:33:02.9525998Z             },
2026-07-26T22:33:02.9526103Z             {
2026-07-26T22:33:02.9526244Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.9526358Z               "line": 1323
2026-07-26T22:33:02.9526465Z             },
2026-07-26T22:33:02.9526573Z             {
2026-07-26T22:33:02.9526717Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:02.9526921Z               "line": 1346
2026-07-26T22:33:02.9527017Z             }
2026-07-26T22:33:02.9527117Z           ]
2026-07-26T22:33:02.9527216Z         }
2026-07-26T22:33:02.9527327Z       }
2026-07-26T22:33:02.9527426Z     },
2026-07-26T22:33:02.9527531Z     {
2026-07-26T22:33:02.9527676Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-07-26T22:33:02.9528371Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-07-26T22:33:02.9528490Z       "requiredStages": [
2026-07-26T22:33:02.9528601Z         "impl",
2026-07-26T22:33:02.9528700Z         "unit"
2026-07-26T22:33:02.9528804Z       ],
2026-07-26T22:33:02.9528908Z       "stages": {
2026-07-26T22:33:02.9529199Z         "doc": {
2026-07-26T22:33:02.9529305Z           "complete": false,
2026-07-26T22:33:02.9529423Z           "evidence": []
2026-07-26T22:33:02.9529524Z         },
2026-07-26T22:33:02.9529633Z         "impl": {
2026-07-26T22:33:02.9529742Z           "complete": true,
2026-07-26T22:33:02.9529858Z           "evidence": [
2026-07-26T22:33:02.9529958Z             {
2026-07-26T22:33:02.9530105Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9530211Z               "line": 3843
2026-07-26T22:33:02.9530315Z             },
2026-07-26T22:33:02.9530415Z             {
2026-07-26T22:33:02.9530564Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9530682Z               "line": 4461
2026-07-26T22:33:02.9530782Z             }
2026-07-26T22:33:02.9530884Z           ]
2026-07-26T22:33:02.9535253Z         },
2026-07-26T22:33:02.9535406Z         "int": {
2026-07-26T22:33:02.9535529Z           "complete": false,
2026-07-26T22:33:02.9535654Z           "evidence": []
2026-07-26T22:33:02.9535759Z         },
2026-07-26T22:33:02.9535863Z         "unit": {
2026-07-26T22:33:02.9535983Z           "complete": true,
2026-07-26T22:33:02.9536101Z           "evidence": [
2026-07-26T22:33:02.9536202Z             {
2026-07-26T22:33:02.9536370Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-07-26T22:33:02.9536487Z               "line": 161
2026-07-26T22:33:02.9536587Z             }
2026-07-26T22:33:02.9536696Z           ]
2026-07-26T22:33:02.9536785Z         }
2026-07-26T22:33:02.9536890Z       }
2026-07-26T22:33:02.9536991Z     },
2026-07-26T22:33:02.9537090Z     {
2026-07-26T22:33:02.9537224Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-07-26T22:33:02.9539147Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-07-26T22:33:02.9539274Z       "requiredStages": [
2026-07-26T22:33:02.9539373Z         "impl",
2026-07-26T22:33:02.9539473Z         "unit"
2026-07-26T22:33:02.9539570Z       ],
2026-07-26T22:33:02.9539678Z       "stages": {
2026-07-26T22:33:02.9539774Z         "doc": {
2026-07-26T22:33:02.9539893Z           "complete": false,
2026-07-26T22:33:02.9539993Z           "evidence": []
2026-07-26T22:33:02.9540094Z         },
2026-07-26T22:33:02.9540193Z         "impl": {
2026-07-26T22:33:02.9540312Z           "complete": true,
2026-07-26T22:33:02.9540418Z           "evidence": [
2026-07-26T22:33:02.9540522Z             {
2026-07-26T22:33:02.9540670Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9540791Z               "line": 3871
2026-07-26T22:33:02.9540885Z             },
2026-07-26T22:33:02.9541152Z             {
2026-07-26T22:33:02.9541304Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-07-26T22:33:02.9541425Z               "line": 276
2026-07-26T22:33:02.9541518Z             },
2026-07-26T22:33:02.9541622Z             {
2026-07-26T22:33:02.9541761Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-07-26T22:33:02.9541868Z               "line": 301
2026-07-26T22:33:02.9541968Z             },
2026-07-26T22:33:02.9542069Z             {
2026-07-26T22:33:02.9542207Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-07-26T22:33:02.9542317Z               "line": 332
2026-07-26T22:33:02.9542417Z             }
2026-07-26T22:33:02.9542522Z           ]
2026-07-26T22:33:02.9542621Z         },
2026-07-26T22:33:02.9542722Z         "int": {
2026-07-26T22:33:02.9542836Z           "complete": false,
2026-07-26T22:33:02.9543047Z           "evidence": []
2026-07-26T22:33:02.9543146Z         },
2026-07-26T22:33:02.9543251Z         "unit": {
2026-07-26T22:33:02.9543357Z           "complete": true,
2026-07-26T22:33:02.9543475Z           "evidence": [
2026-07-26T22:33:02.9543565Z             {
2026-07-26T22:33:02.9543714Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-07-26T22:33:02.9543824Z               "line": 488
2026-07-26T22:33:02.9543924Z             }
2026-07-26T22:33:02.9544020Z           ]
2026-07-26T22:33:02.9544119Z         }
2026-07-26T22:33:02.9544220Z       }
2026-07-26T22:33:02.9544325Z     },
2026-07-26T22:33:02.9544419Z     {
2026-07-26T22:33:02.9544561Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-07-26T22:33:02.9546544Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-07-26T22:33:02.9546700Z       "requiredStages": [
2026-07-26T22:33:02.9546801Z         "impl",
2026-07-26T22:33:02.9546911Z         "unit"
2026-07-26T22:33:02.9547066Z       ],
2026-07-26T22:33:02.9547176Z       "stages": {
2026-07-26T22:33:02.9547279Z         "doc": {
2026-07-26T22:33:02.9547388Z           "complete": false,
2026-07-26T22:33:02.9547493Z           "evidence": []
2026-07-26T22:33:02.9547594Z         },
2026-07-26T22:33:02.9547697Z         "impl": {
2026-07-26T22:33:02.9547813Z           "complete": true,
2026-07-26T22:33:02.9547923Z           "evidence": [
2026-07-26T22:33:02.9548026Z             {
2026-07-26T22:33:02.9548175Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9548285Z               "line": 1189
2026-07-26T22:33:02.9548385Z             },
2026-07-26T22:33:02.9548490Z             {
2026-07-26T22:33:02.9548632Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9548733Z               "line": 328
2026-07-26T22:33:02.9548838Z             },
2026-07-26T22:33:02.9549024Z             {
2026-07-26T22:33:02.9549167Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9549276Z               "line": 365
2026-07-26T22:33:02.9549387Z             },
2026-07-26T22:33:02.9549496Z             {
2026-07-26T22:33:02.9549644Z               "path": "crates/spt-daemon/src/reap.rs",
2026-07-26T22:33:02.9549750Z               "line": 26
2026-07-26T22:33:02.9549848Z             }
2026-07-26T22:33:02.9549952Z           ]
2026-07-26T22:33:02.9550048Z         },
2026-07-26T22:33:02.9550154Z         "int": {
2026-07-26T22:33:02.9550257Z           "complete": false,
2026-07-26T22:33:02.9550377Z           "evidence": []
2026-07-26T22:33:02.9550468Z         },
2026-07-26T22:33:02.9550567Z         "unit": {
2026-07-26T22:33:02.9550816Z           "complete": true,
2026-07-26T22:33:02.9550920Z           "evidence": [
2026-07-26T22:33:02.9551017Z             {
2026-07-26T22:33:02.9551164Z               "path": "crates/spt-daemon/src/reap.rs",
2026-07-26T22:33:02.9551263Z               "line": 271
2026-07-26T22:33:02.9551370Z             },
2026-07-26T22:33:02.9551464Z             {
2026-07-26T22:33:02.9551608Z               "path": "crates/spt-daemon/src/reap.rs",
2026-07-26T22:33:02.9551708Z               "line": 348
2026-07-26T22:33:02.9551812Z             }
2026-07-26T22:33:02.9551912Z           ]
2026-07-26T22:33:02.9552014Z         }
2026-07-26T22:33:02.9552112Z       }
2026-07-26T22:33:02.9552211Z     },
2026-07-26T22:33:02.9552302Z     {
2026-07-26T22:33:02.9552428Z       "id": "REQ-HAZARD-DEAD-REC-PID",
2026-07-26T22:33:02.9555987Z       "title": "E-1 rider (F-026 #11 dead-pid class, doyle-ruled SCOPED 2026-07-05 — KNOWN-HAZARDS 7.34): a dead `rec.pid` on an spt-hosted perch is EXPECTED, not staleness — the recorded pid is the ephemeral bind-CLI pid, which dies immediately after bind (the broker holds the PTY; no resident harness process at that pid). NO reader may alive-gate on `rec.pid` alone: spt-hosted LIVENESS comes from the daemon-managed status field (KH 2.5 — status present ⇒ authoritative, never a per-pid probe); IDENTITY comes from session/ancestry resolution where `rec.parent_pid` (the harness pid, the stable session-binding anchor) is the ancestry candidate (REQ-SELF-DETECT-PARENT-PID). Re-stamping rec.pid with the harness pid (shape (a)) is OVERRULED: ADR-0021 demoted pid to a bind-time seed hint (re-anchoring truth there reverses the design); every pre-existing record keeps the old CLI pid so readers need the scoped discipline anyway (migration hole); blast radius (every rec.pid consumer + KH 2.5 external-perch probe semantics) buys nothing the reader-side fix doesn't. CLASS rule: any newly sighted rec.pid-alive-gating reader gets the same scoped fix and EXTENDS this requirement's evidence — no new REQ per reader.",
2026-07-26T22:33:02.9556231Z       "requiredStages": [
2026-07-26T22:33:02.9556330Z         "doc",
2026-07-26T22:33:02.9556421Z         "int"
2026-07-26T22:33:02.9556521Z       ],
2026-07-26T22:33:02.9556621Z       "stages": {
2026-07-26T22:33:02.9556722Z         "doc": {
2026-07-26T22:33:02.9556841Z           "complete": true,
2026-07-26T22:33:02.9556955Z           "evidence": [
2026-07-26T22:33:02.9557046Z             {
2026-07-26T22:33:02.9557179Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9557275Z               "line": 620
2026-07-26T22:33:02.9557381Z             }
2026-07-26T22:33:02.9557480Z           ]
2026-07-26T22:33:02.9557583Z         },
2026-07-26T22:33:02.9557683Z         "impl": {
2026-07-26T22:33:02.9557802Z           "complete": false,
2026-07-26T22:33:02.9557914Z           "evidence": []
2026-07-26T22:33:02.9558020Z         },
2026-07-26T22:33:02.9558125Z         "int": {
2026-07-26T22:33:02.9558239Z           "complete": true,
2026-07-26T22:33:02.9558339Z           "evidence": [
2026-07-26T22:33:02.9558454Z             {
2026-07-26T22:33:02.9558577Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:02.9558683Z               "line": 368
2026-07-26T22:33:02.9558788Z             }
2026-07-26T22:33:02.9558887Z           ]
2026-07-26T22:33:02.9559069Z         },
2026-07-26T22:33:02.9559165Z         "unit": {
2026-07-26T22:33:02.9559283Z           "complete": false,
2026-07-26T22:33:02.9559389Z           "evidence": []
2026-07-26T22:33:02.9559494Z         }
2026-07-26T22:33:02.9559594Z       }
2026-07-26T22:33:02.9559699Z     },
2026-07-26T22:33:02.9559788Z     {
2026-07-26T22:33:02.9559923Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-07-26T22:33:02.9560132Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-07-26T22:33:02.9560253Z       "requiredStages": [
2026-07-26T22:33:02.9560352Z         "impl",
2026-07-26T22:33:02.9560460Z         "unit"
2026-07-26T22:33:02.9560560Z       ],
2026-07-26T22:33:02.9560666Z       "stages": {
2026-07-26T22:33:02.9560874Z         "doc": {
2026-07-26T22:33:02.9560990Z           "complete": false,
2026-07-26T22:33:02.9561090Z           "evidence": []
2026-07-26T22:33:02.9561194Z         },
2026-07-26T22:33:02.9561296Z         "impl": {
2026-07-26T22:33:02.9561414Z           "complete": true,
2026-07-26T22:33:02.9561514Z           "evidence": [
2026-07-26T22:33:02.9561615Z             {
2026-07-26T22:33:02.9561761Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.9561872Z               "line": 91
2026-07-26T22:33:02.9561967Z             },
2026-07-26T22:33:02.9562067Z             {
2026-07-26T22:33:02.9562206Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.9562315Z               "line": 327
2026-07-26T22:33:02.9562419Z             },
2026-07-26T22:33:02.9562531Z             {
2026-07-26T22:33:02.9562919Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.9563051Z               "line": 463
2026-07-26T22:33:02.9563151Z             },
2026-07-26T22:33:02.9563262Z             {
2026-07-26T22:33:02.9563398Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.9563514Z               "line": 777
2026-07-26T22:33:02.9563609Z             }
2026-07-26T22:33:02.9563713Z           ]
2026-07-26T22:33:02.9563810Z         },
2026-07-26T22:33:02.9563914Z         "int": {
2026-07-26T22:33:02.9564033Z           "complete": false,
2026-07-26T22:33:02.9564148Z           "evidence": []
2026-07-26T22:33:02.9564243Z         },
2026-07-26T22:33:02.9564347Z         "unit": {
2026-07-26T22:33:02.9564449Z           "complete": true,
2026-07-26T22:33:02.9564557Z           "evidence": [
2026-07-26T22:33:02.9564657Z             {
2026-07-26T22:33:02.9564797Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.9564900Z               "line": 908
2026-07-26T22:33:02.9565001Z             },
2026-07-26T22:33:02.9565098Z             {
2026-07-26T22:33:02.9565239Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.9565360Z               "line": 980
2026-07-26T22:33:02.9565460Z             },
2026-07-26T22:33:02.9565567Z             {
2026-07-26T22:33:02.9565700Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.9565809Z               "line": 1043
2026-07-26T22:33:02.9565904Z             },
2026-07-26T22:33:02.9566004Z             {
2026-07-26T22:33:02.9566133Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.9566237Z               "line": 1064
2026-07-26T22:33:02.9566337Z             }
2026-07-26T22:33:02.9566438Z           ]
2026-07-26T22:33:02.9566542Z         }
2026-07-26T22:33:02.9566643Z       }
2026-07-26T22:33:02.9566738Z     },
2026-07-26T22:33:02.9566838Z     {
2026-07-26T22:33:02.9566967Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-07-26T22:33:02.9569505Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-07-26T22:33:02.9569691Z       "requiredStages": [
2026-07-26T22:33:02.9569824Z         "impl",
2026-07-26T22:33:02.9569973Z         "unit"
2026-07-26T22:33:02.9570110Z       ],
2026-07-26T22:33:02.9570264Z       "stages": {
2026-07-26T22:33:02.9570378Z         "doc": {
2026-07-26T22:33:02.9570488Z           "complete": false,
2026-07-26T22:33:02.9570593Z           "evidence": []
2026-07-26T22:33:02.9570865Z         },
2026-07-26T22:33:02.9570978Z         "impl": {
2026-07-26T22:33:02.9571091Z           "complete": true,
2026-07-26T22:33:02.9571187Z           "evidence": [
2026-07-26T22:33:02.9571302Z             {
2026-07-26T22:33:02.9571502Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:02.9571622Z               "line": 463
2026-07-26T22:33:02.9571721Z             },
2026-07-26T22:33:02.9571817Z             {
2026-07-26T22:33:02.9571965Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:02.9572060Z               "line": 507
2026-07-26T22:33:02.9572156Z             }
2026-07-26T22:33:02.9572250Z           ]
2026-07-26T22:33:02.9572350Z         },
2026-07-26T22:33:02.9572451Z         "int": {
2026-07-26T22:33:02.9572565Z           "complete": false,
2026-07-26T22:33:02.9572684Z           "evidence": []
2026-07-26T22:33:02.9572880Z         },
2026-07-26T22:33:02.9572989Z         "unit": {
2026-07-26T22:33:02.9573096Z           "complete": true,
2026-07-26T22:33:02.9573213Z           "evidence": [
2026-07-26T22:33:02.9573317Z             {
2026-07-26T22:33:02.9573465Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:02.9573572Z               "line": 1119
2026-07-26T22:33:02.9573677Z             }
2026-07-26T22:33:02.9573774Z           ]
2026-07-26T22:33:02.9573878Z         }
2026-07-26T22:33:02.9573977Z       }
2026-07-26T22:33:02.9574079Z     },
2026-07-26T22:33:02.9574179Z     {
2026-07-26T22:33:02.9574331Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-07-26T22:33:02.9574474Z       "title": "Deferred rows survive poll drain (4.4)",
2026-07-26T22:33:02.9574593Z       "requiredStages": [
2026-07-26T22:33:02.9574694Z         "impl",
2026-07-26T22:33:02.9574803Z         "unit"
2026-07-26T22:33:02.9574902Z       ],
2026-07-26T22:33:02.9575013Z       "stages": {
2026-07-26T22:33:02.9575117Z         "doc": {
2026-07-26T22:33:02.9575237Z           "complete": false,
2026-07-26T22:33:02.9575338Z           "evidence": []
2026-07-26T22:33:02.9575441Z         },
2026-07-26T22:33:02.9575546Z         "impl": {
2026-07-26T22:33:02.9575663Z           "complete": true,
2026-07-26T22:33:02.9575765Z           "evidence": [
2026-07-26T22:33:02.9575871Z             {
2026-07-26T22:33:02.9576015Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.9576123Z               "line": 356
2026-07-26T22:33:02.9576222Z             },
2026-07-26T22:33:02.9576313Z             {
2026-07-26T22:33:02.9576459Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.9576564Z               "line": 446
2026-07-26T22:33:02.9576669Z             }
2026-07-26T22:33:02.9576769Z           ]
2026-07-26T22:33:02.9576888Z         },
2026-07-26T22:33:02.9576989Z         "int": {
2026-07-26T22:33:02.9577092Z           "complete": false,
2026-07-26T22:33:02.9577203Z           "evidence": []
2026-07-26T22:33:02.9577298Z         },
2026-07-26T22:33:02.9577403Z         "unit": {
2026-07-26T22:33:02.9577522Z           "complete": true,
2026-07-26T22:33:02.9577637Z           "evidence": [
2026-07-26T22:33:02.9577741Z             {
2026-07-26T22:33:02.9577866Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.9577980Z               "line": 935
2026-07-26T22:33:02.9578080Z             },
2026-07-26T22:33:02.9578181Z             {
2026-07-26T22:33:02.9578313Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:02.9578433Z               "line": 1016
2026-07-26T22:33:02.9578520Z             }
2026-07-26T22:33:02.9578619Z           ]
2026-07-26T22:33:02.9578718Z         }
2026-07-26T22:33:02.9578818Z       }
2026-07-26T22:33:02.9578917Z     },
2026-07-26T22:33:02.9579111Z     {
2026-07-26T22:33:02.9579251Z       "id": "REQ-HAZARD-DELIVERY-STARVATION",
2026-07-26T22:33:02.9581407Z       "title": "A message that has REACHED a node's spool (WAN-arrived or locally spooled-while-active) is NEVER dependent on an adapter HOOK-POLL cadence for its eventual delivery to an spt-hosted (relay-less) endpoint — the daemon itself drives delivery on the events it owns (WAN ingress + the ACTIVE→IDLE edge). Hazard class: delivery starvation. Without this, cross-node and post-active messages to an spt-hosted perch strand indefinitely whenever the adapter's hooks are quiet (idle session, no user turns), presenting as 'sent but never lands' with a healthy binary and an idle perch (F-023). Guarded by REQ-WAN-SPT-HOSTED-DELIVERY (WAN ingress leg) + REQ-MSG-IDLE-EDGE-DRAIN (idle-edge drain). (F-023)",
2026-07-26T22:33:02.9581642Z       "requiredStages": [
2026-07-26T22:33:02.9581743Z         "doc",
2026-07-26T22:33:02.9581843Z         "int"
2026-07-26T22:33:02.9581942Z       ],
2026-07-26T22:33:02.9582048Z       "stages": {
2026-07-26T22:33:02.9582148Z         "doc": {
2026-07-26T22:33:02.9582261Z           "complete": true,
2026-07-26T22:33:02.9582368Z           "evidence": [
2026-07-26T22:33:02.9582553Z             {
2026-07-26T22:33:02.9582687Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9582806Z               "line": 527
2026-07-26T22:33:02.9582910Z             },
2026-07-26T22:33:02.9583016Z             {
2026-07-26T22:33:02.9583144Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9583254Z               "line": 859
2026-07-26T22:33:02.9583350Z             }
2026-07-26T22:33:02.9583449Z           ]
2026-07-26T22:33:02.9583554Z         },
2026-07-26T22:33:02.9583656Z         "impl": {
2026-07-26T22:33:02.9583759Z           "complete": true,
2026-07-26T22:33:02.9583873Z           "evidence": [
2026-07-26T22:33:02.9583968Z             {
2026-07-26T22:33:02.9584119Z               "path": "crates/spt-daemon/src/inject.rs",
2026-07-26T22:33:02.9584218Z               "line": 107
2026-07-26T22:33:02.9584324Z             },
2026-07-26T22:33:02.9584424Z             {
2026-07-26T22:33:02.9584566Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:02.9584677Z               "line": 314
2026-07-26T22:33:02.9584776Z             },
2026-07-26T22:33:02.9584876Z             {
2026-07-26T22:33:02.9585029Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:02.9585133Z               "line": 310
2026-07-26T22:33:02.9585235Z             }
2026-07-26T22:33:02.9585325Z           ]
2026-07-26T22:33:02.9585429Z         },
2026-07-26T22:33:02.9585520Z         "int": {
2026-07-26T22:33:02.9585635Z           "complete": true,
2026-07-26T22:33:02.9585730Z           "evidence": [
2026-07-26T22:33:02.9585850Z             {
2026-07-26T22:33:02.9586015Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:02.9586140Z               "line": 2889
2026-07-26T22:33:02.9586241Z             },
2026-07-26T22:33:02.9586344Z             {
2026-07-26T22:33:02.9586494Z               "path": "crates/spt/tests/idle_edge_drain_e2e.rs",
2026-07-26T22:33:02.9586590Z               "line": 88
2026-07-26T22:33:02.9586697Z             },
2026-07-26T22:33:02.9586797Z             {
2026-07-26T22:33:02.9586935Z               "path": "docs/F-035-CONFLICT.md",
2026-07-26T22:33:02.9587052Z               "line": 15
2026-07-26T22:33:02.9587157Z             }
2026-07-26T22:33:02.9587258Z           ]
2026-07-26T22:33:02.9587357Z         },
2026-07-26T22:33:02.9587463Z         "unit": {
2026-07-26T22:33:02.9587582Z           "complete": false,
2026-07-26T22:33:02.9587681Z           "evidence": []
2026-07-26T22:33:02.9587782Z         }
2026-07-26T22:33:02.9587877Z       }
2026-07-26T22:33:02.9587982Z     },
2026-07-26T22:33:02.9588082Z     {
2026-07-26T22:33:02.9588220Z       "id": "REQ-HAZARD-DETACHED-DAEMON-STDIO",
2026-07-26T22:33:02.9593704Z       "title": "A daemon DETACHED-IN-FACT (no interactive console, or an inherited stderr PIPE nobody drains) that never nulled its std handles will BLOCK on stdio writes when the pipe fills, and/or pop a visible conhost window (REQ-HAZARD-WMI-DAEMON-WINDOW is a covered surface of this hazard). detach_console nulls the 3 handles only under the --detached flag; a rung that omits it (the bare line-82 elevated->deelevated respawn; a STALE installer at-logon task registered as bare `daemon run`, confirmed live field-drift on ENLYZEAM) is exposed. FIX: (load-bearing) inside `daemon run`, null the 3 std handles when stderr GetFileType==FILE_TYPE_PIPE — a pipe is the ONLY std sink that BLOCKS the daemon when it fills; catches every rung whose inherited stderr is an undrained pipe, independent of whether each caller passed --detached, while a FILE (2>run.log AND every int-test Stdio::from(file) brain-log capture), a CONSOLE (scrolls), and a NULL/absent handle (DETACHED_PROCESS rungs, already discard) all SURVIVE. DELIBERATELY NOT gated on GetConsoleWindow==NULL: a CREATE_NO_WINDOW daemon has no console window yet a drained FILE stderr — nulling it would blank the capture for ZERO safety gain (a file never blocks) and mass-red the int-test brain-log assertions. (belt) pass --detached on the bare line-82 respawn; (drift nag) parse the schtasks /Query action argv and LOUDLY nag when the at-logon task is the stale bare `daemon run` form (manual/installer re-registers; the daemon must NOT self-elevate to rewrite it). Defense-in-depth — no current spt Windows spawn path was proven to yield a BLOCKING inherited pipe (all rungs null-discard or scrolling-conhost), so this is hardening, not a confirmed incident root.",
2026-07-26T22:33:02.9594062Z       "requiredStages": [
2026-07-26T22:33:02.9594163Z         "impl",
2026-07-26T22:33:02.9594268Z         "unit"
2026-07-26T22:33:02.9594371Z       ],
2026-07-26T22:33:02.9594475Z       "stages": {
2026-07-26T22:33:02.9594581Z         "doc": {
2026-07-26T22:33:02.9594698Z           "complete": false,
2026-07-26T22:33:02.9594802Z           "evidence": []
2026-07-26T22:33:02.9594908Z         },
2026-07-26T22:33:02.9595008Z         "impl": {
2026-07-26T22:33:02.9595126Z           "complete": true,
2026-07-26T22:33:02.9595237Z           "evidence": [
2026-07-26T22:33:02.9595346Z             {
2026-07-26T22:33:02.9595499Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9595599Z               "line": 1120
2026-07-26T22:33:02.9595717Z             },
2026-07-26T22:33:02.9595809Z             {
2026-07-26T22:33:02.9595966Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9596066Z               "line": 1138
2026-07-26T22:33:02.9596172Z             },
2026-07-26T22:33:02.9596272Z             {
2026-07-26T22:33:02.9596420Z               "path": "crates/spt-daemon/src/service.rs",
2026-07-26T22:33:02.9596520Z               "line": 217
2026-07-26T22:33:02.9596629Z             },
2026-07-26T22:33:02.9596725Z             {
2026-07-26T22:33:02.9596872Z               "path": "crates/spt-daemon/src/stderrlog.rs",
2026-07-26T22:33:02.9596977Z               "line": 24
2026-07-26T22:33:02.9597078Z             }
2026-07-26T22:33:02.9597178Z           ]
2026-07-26T22:33:02.9597276Z         },
2026-07-26T22:33:02.9597376Z         "int": {
2026-07-26T22:33:02.9597504Z           "complete": false,
2026-07-26T22:33:02.9597602Z           "evidence": []
2026-07-26T22:33:02.9597708Z         },
2026-07-26T22:33:02.9597818Z         "unit": {
2026-07-26T22:33:02.9597927Z           "complete": true,
2026-07-26T22:33:02.9598032Z           "evidence": [
2026-07-26T22:33:02.9598137Z             {
2026-07-26T22:33:02.9598275Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9598395Z               "line": 1435
2026-07-26T22:33:02.9598496Z             },
2026-07-26T22:33:02.9598604Z             {
2026-07-26T22:33:02.9598734Z               "path": "crates/spt-daemon/src/service.rs",
2026-07-26T22:33:02.9598852Z               "line": 334
2026-07-26T22:33:02.9599020Z             }
2026-07-26T22:33:02.9599124Z           ]
2026-07-26T22:33:02.9599219Z         }
2026-07-26T22:33:02.9599325Z       }
2026-07-26T22:33:02.9599424Z     },
2026-07-26T22:33:02.9599529Z     {
2026-07-26T22:33:02.9599669Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-07-26T22:33:02.9600818Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-07-26T22:33:02.9601094Z       "requiredStages": [
2026-07-26T22:33:02.9601200Z         "impl",
2026-07-26T22:33:02.9601300Z         "unit"
2026-07-26T22:33:02.9601400Z       ],
2026-07-26T22:33:02.9601500Z       "stages": {
2026-07-26T22:33:02.9601606Z         "doc": {
2026-07-26T22:33:02.9601719Z           "complete": true,
2026-07-26T22:33:02.9601819Z           "evidence": [
2026-07-26T22:33:02.9601925Z             {
2026-07-26T22:33:02.9602053Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9602164Z               "line": 213
2026-07-26T22:33:02.9602259Z             }
2026-07-26T22:33:02.9602459Z           ]
2026-07-26T22:33:02.9602565Z         },
2026-07-26T22:33:02.9602672Z         "impl": {
2026-07-26T22:33:02.9602791Z           "complete": true,
2026-07-26T22:33:02.9602911Z           "evidence": [
2026-07-26T22:33:02.9603006Z             {
2026-07-26T22:33:02.9603154Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9603254Z               "line": 845
2026-07-26T22:33:02.9603363Z             },
2026-07-26T22:33:02.9603459Z             {
2026-07-26T22:33:02.9603607Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9603716Z               "line": 945
2026-07-26T22:33:02.9603808Z             },
2026-07-26T22:33:02.9603907Z             {
2026-07-26T22:33:02.9604049Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9604151Z               "line": 1329
2026-07-26T22:33:02.9604255Z             },
2026-07-26T22:33:02.9604355Z             {
2026-07-26T22:33:02.9604503Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:02.9604607Z               "line": 238
2026-07-26T22:33:02.9604713Z             }
2026-07-26T22:33:02.9604809Z           ]
2026-07-26T22:33:02.9604922Z         },
2026-07-26T22:33:02.9605017Z         "int": {
2026-07-26T22:33:02.9605141Z           "complete": false,
2026-07-26T22:33:02.9605249Z           "evidence": []
2026-07-26T22:33:02.9605348Z         },
2026-07-26T22:33:02.9605454Z         "unit": {
2026-07-26T22:33:02.9605568Z           "complete": true,
2026-07-26T22:33:02.9605673Z           "evidence": [
2026-07-26T22:33:02.9605774Z             {
2026-07-26T22:33:02.9605916Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9606021Z               "line": 1473
2026-07-26T22:33:02.9606131Z             },
2026-07-26T22:33:02.9606230Z             {
2026-07-26T22:33:02.9606370Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-07-26T22:33:02.9606478Z               "line": 44
2026-07-26T22:33:02.9606578Z             },
2026-07-26T22:33:02.9606685Z             {
2026-07-26T22:33:02.9606836Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-07-26T22:33:02.9606931Z               "line": 52
2026-07-26T22:33:02.9607047Z             },
2026-07-26T22:33:02.9607141Z             {
2026-07-26T22:33:02.9607280Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-07-26T22:33:02.9607381Z               "line": 57
2026-07-26T22:33:02.9607479Z             },
2026-07-26T22:33:02.9607581Z             {
2026-07-26T22:33:02.9607742Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-07-26T22:33:02.9607851Z               "line": 54
2026-07-26T22:33:02.9607956Z             },
2026-07-26T22:33:02.9608050Z             {
2026-07-26T22:33:02.9608215Z               "path": "crates/spt/tests/shell_stale_online_e2e.rs",
2026-07-26T22:33:02.9608311Z               "line": 59
2026-07-26T22:33:02.9608421Z             }
2026-07-26T22:33:02.9608515Z           ]
2026-07-26T22:33:02.9608617Z         }
2026-07-26T22:33:02.9608722Z       }
2026-07-26T22:33:02.9608825Z     },
2026-07-26T22:33:02.9608922Z     {
2026-07-26T22:33:02.9609145Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-07-26T22:33:02.9609489Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-07-26T22:33:02.9609599Z       "requiredStages": [
2026-07-26T22:33:02.9609698Z         "impl",
2026-07-26T22:33:02.9609794Z         "unit"
2026-07-26T22:33:02.9609895Z       ],
2026-07-26T22:33:02.9610003Z       "stages": {
2026-07-26T22:33:02.9610104Z         "doc": {
2026-07-26T22:33:02.9610219Z           "complete": false,
2026-07-26T22:33:02.9610314Z           "evidence": []
2026-07-26T22:33:02.9610413Z         },
2026-07-26T22:33:02.9610513Z         "impl": {
2026-07-26T22:33:02.9610806Z           "complete": true,
2026-07-26T22:33:02.9610974Z           "evidence": [
2026-07-26T22:33:02.9611078Z             {
2026-07-26T22:33:02.9611212Z               "path": "crates/spt-live/src/context.rs",
2026-07-26T22:33:02.9611532Z               "line": 26
2026-07-26T22:33:02.9611650Z             },
2026-07-26T22:33:02.9611760Z             {
2026-07-26T22:33:02.9611888Z               "path": "crates/spt-live/src/context.rs",
2026-07-26T22:33:02.9612007Z               "line": 135
2026-07-26T22:33:02.9612128Z             },
2026-07-26T22:33:02.9612246Z             {
2026-07-26T22:33:02.9612389Z               "path": "crates/spt-store/src/contextmark.rs",
2026-07-26T22:33:02.9612495Z               "line": 26
2026-07-26T22:33:02.9612599Z             },
2026-07-26T22:33:02.9612699Z             {
2026-07-26T22:33:02.9612847Z               "path": "crates/spt-store/src/contextmark.rs",
2026-07-26T22:33:02.9612947Z               "line": 237
2026-07-26T22:33:02.9613049Z             }
2026-07-26T22:33:02.9613148Z           ]
2026-07-26T22:33:02.9613251Z         },
2026-07-26T22:33:02.9613351Z         "int": {
2026-07-26T22:33:02.9613442Z           "complete": false,
2026-07-26T22:33:02.9613547Z           "evidence": []
2026-07-26T22:33:02.9613656Z         },
2026-07-26T22:33:02.9613753Z         "unit": {
2026-07-26T22:33:02.9613871Z           "complete": true,
2026-07-26T22:33:02.9613970Z           "evidence": [
2026-07-26T22:33:02.9614072Z             {
2026-07-26T22:33:02.9614195Z               "path": "crates/spt-live/src/context.rs",
2026-07-26T22:33:02.9614300Z               "line": 161
2026-07-26T22:33:02.9614415Z             },
2026-07-26T22:33:02.9614529Z             {
2026-07-26T22:33:02.9614653Z               "path": "crates/spt-live/src/context.rs",
2026-07-26T22:33:02.9614758Z               "line": 170
2026-07-26T22:33:02.9614858Z             },
2026-07-26T22:33:02.9614964Z             {
2026-07-26T22:33:02.9615083Z               "path": "crates/spt-live/src/context.rs",
2026-07-26T22:33:02.9615187Z               "line": 179
2026-07-26T22:33:02.9615288Z             },
2026-07-26T22:33:02.9615388Z             {
2026-07-26T22:33:02.9615515Z               "path": "crates/spt-live/src/context.rs",
2026-07-26T22:33:02.9615620Z               "line": 190
2026-07-26T22:33:02.9615724Z             },
2026-07-26T22:33:02.9615828Z             {
2026-07-26T22:33:02.9615951Z               "path": "crates/spt-live/src/context.rs",
2026-07-26T22:33:02.9616067Z               "line": 199
2026-07-26T22:33:02.9616166Z             },
2026-07-26T22:33:02.9616261Z             {
2026-07-26T22:33:02.9616381Z               "path": "crates/spt-live/src/context.rs",
2026-07-26T22:33:02.9616490Z               "line": 216
2026-07-26T22:33:02.9616586Z             },
2026-07-26T22:33:02.9616691Z             {
2026-07-26T22:33:02.9616814Z               "path": "crates/spt-live/src/context.rs",
2026-07-26T22:33:02.9616921Z               "line": 242
2026-07-26T22:33:02.9617025Z             },
2026-07-26T22:33:02.9617124Z             {
2026-07-26T22:33:02.9617263Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:02.9617358Z               "line": 482
2026-07-26T22:33:02.9617467Z             },
2026-07-26T22:33:02.9617565Z             {
2026-07-26T22:33:02.9617706Z               "path": "crates/spt-live/src/signoff.rs",
2026-07-26T22:33:02.9617806Z               "line": 244
2026-07-26T22:33:02.9617907Z             },
2026-07-26T22:33:02.9618088Z             {
2026-07-26T22:33:02.9618241Z               "path": "crates/spt-store/src/contextmark.rs",
2026-07-26T22:33:02.9618335Z               "line": 265
2026-07-26T22:33:02.9618439Z             },
2026-07-26T22:33:02.9618540Z             {
2026-07-26T22:33:02.9618685Z               "path": "crates/spt-store/src/contextmark.rs",
2026-07-26T22:33:02.9618790Z               "line": 293
2026-07-26T22:33:02.9618896Z             },
2026-07-26T22:33:02.9619080Z             {
2026-07-26T22:33:02.9619225Z               "path": "crates/spt-store/src/contextmark.rs",
2026-07-26T22:33:02.9619324Z               "line": 317
2026-07-26T22:33:02.9619429Z             },
2026-07-26T22:33:02.9619525Z             {
2026-07-26T22:33:02.9619672Z               "path": "crates/spt-store/src/contextmark.rs",
2026-07-26T22:33:02.9619772Z               "line": 327
2026-07-26T22:33:02.9620005Z             },
2026-07-26T22:33:02.9620102Z             {
2026-07-26T22:33:02.9620253Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-07-26T22:33:02.9620359Z               "line": 540
2026-07-26T22:33:02.9620464Z             }
2026-07-26T22:33:02.9620564Z           ]
2026-07-26T22:33:02.9620664Z         }
2026-07-26T22:33:02.9620765Z       }
2026-07-26T22:33:02.9620869Z     },
2026-07-26T22:33:02.9620968Z     {
2026-07-26T22:33:02.9621125Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-07-26T22:33:02.9625985Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-07-26T22:33:02.9626204Z       "requiredStages": [
2026-07-26T22:33:02.9626345Z         "int"
2026-07-26T22:33:02.9626483Z       ],
2026-07-26T22:33:02.9626613Z       "stages": {
2026-07-26T22:33:02.9626721Z         "doc": {
2026-07-26T22:33:02.9626850Z           "complete": true,
2026-07-26T22:33:02.9626960Z           "evidence": [
2026-07-26T22:33:02.9627055Z             {
2026-07-26T22:33:02.9627341Z               "path": "docs/adr/0040-bounded-stream-seat-lifecycle-one-way-terminal.md",
2026-07-26T22:33:02.9627451Z               "line": 118
2026-07-26T22:33:02.9627551Z             }
2026-07-26T22:33:02.9627651Z           ]
2026-07-26T22:33:02.9627756Z         },
2026-07-26T22:33:02.9627861Z         "impl": {
2026-07-26T22:33:02.9627975Z           "complete": false,
2026-07-26T22:33:02.9628076Z           "evidence": []
2026-07-26T22:33:02.9628186Z         },
2026-07-26T22:33:02.9628280Z         "int": {
2026-07-26T22:33:02.9628396Z           "complete": true,
2026-07-26T22:33:02.9628624Z           "evidence": [
2026-07-26T22:33:02.9628729Z             {
2026-07-26T22:33:02.9628895Z               "path": "crates/spt-daemon/tests/transport_death_eof.rs",
2026-07-26T22:33:02.9629090Z               "line": 661
2026-07-26T22:33:02.9629184Z             }
2026-07-26T22:33:02.9629288Z           ]
2026-07-26T22:33:02.9629388Z         },
2026-07-26T22:33:02.9629494Z         "unit": {
2026-07-26T22:33:02.9629607Z           "complete": false,
2026-07-26T22:33:02.9629703Z           "evidence": []
2026-07-26T22:33:02.9629799Z         }
2026-07-26T22:33:02.9629903Z       }
2026-07-26T22:33:02.9629998Z     },
2026-07-26T22:33:02.9630099Z     {
2026-07-26T22:33:02.9630222Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-07-26T22:33:02.9631807Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-07-26T22:33:02.9632113Z       "requiredStages": [
2026-07-26T22:33:02.9632231Z         "impl",
2026-07-26T22:33:02.9632333Z         "unit",
2026-07-26T22:33:02.9632432Z         "int"
2026-07-26T22:33:02.9632537Z       ],
2026-07-26T22:33:02.9632638Z       "stages": {
2026-07-26T22:33:02.9632742Z         "doc": {
2026-07-26T22:33:02.9632851Z           "complete": false,
2026-07-26T22:33:02.9632952Z           "evidence": []
2026-07-26T22:33:02.9633051Z         },
2026-07-26T22:33:02.9633156Z         "impl": {
2026-07-26T22:33:02.9633253Z           "complete": true,
2026-07-26T22:33:02.9633361Z           "evidence": [
2026-07-26T22:33:02.9633447Z             {
2026-07-26T22:33:02.9633596Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.9633709Z               "line": 897
2026-07-26T22:33:02.9633805Z             },
2026-07-26T22:33:02.9633906Z             {
2026-07-26T22:33:02.9634038Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.9634139Z               "line": 1052
2026-07-26T22:33:02.9634264Z             },
2026-07-26T22:33:02.9634376Z             {
2026-07-26T22:33:02.9634534Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-07-26T22:33:02.9634639Z               "line": 21
2026-07-26T22:33:02.9634743Z             }
2026-07-26T22:33:02.9634843Z           ]
2026-07-26T22:33:02.9634982Z         },
2026-07-26T22:33:02.9635188Z         "int": {
2026-07-26T22:33:02.9635330Z           "complete": true,
2026-07-26T22:33:02.9635493Z           "evidence": [
2026-07-26T22:33:02.9635654Z             {
2026-07-26T22:33:02.9636016Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-07-26T22:33:02.9636127Z               "line": 238
2026-07-26T22:33:02.9636235Z             },
2026-07-26T22:33:02.9636336Z             {
2026-07-26T22:33:02.9636499Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-07-26T22:33:02.9636598Z               "line": 401
2026-07-26T22:33:02.9636692Z             },
2026-07-26T22:33:02.9636788Z             {
2026-07-26T22:33:02.9636957Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:02.9637053Z               "line": 2246
2026-07-26T22:33:02.9637158Z             },
2026-07-26T22:33:02.9637253Z             {
2026-07-26T22:33:02.9637415Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:02.9637520Z               "line": 2424
2026-07-26T22:33:02.9637620Z             }
2026-07-26T22:33:02.9637721Z           ]
2026-07-26T22:33:02.9637821Z         },
2026-07-26T22:33:02.9637910Z         "unit": {
2026-07-26T22:33:02.9638021Z           "complete": true,
2026-07-26T22:33:02.9638130Z           "evidence": [
2026-07-26T22:33:02.9638360Z             {
2026-07-26T22:33:02.9638507Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.9642525Z               "line": 1440
2026-07-26T22:33:02.9642659Z             }
2026-07-26T22:33:02.9642762Z           ]
2026-07-26T22:33:02.9642864Z         }
2026-07-26T22:33:02.9642964Z       }
2026-07-26T22:33:02.9643053Z     },
2026-07-26T22:33:02.9643155Z     {
2026-07-26T22:33:02.9643307Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-07-26T22:33:02.9643488Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-07-26T22:33:02.9643597Z       "requiredStages": [
2026-07-26T22:33:02.9643702Z         "impl",
2026-07-26T22:33:02.9643808Z         "unit"
2026-07-26T22:33:02.9643908Z       ],
2026-07-26T22:33:02.9644007Z       "stages": {
2026-07-26T22:33:02.9644114Z         "doc": {
2026-07-26T22:33:02.9644380Z           "complete": false,
2026-07-26T22:33:02.9644490Z           "evidence": []
2026-07-26T22:33:02.9644588Z         },
2026-07-26T22:33:02.9644714Z         "impl": {
2026-07-26T22:33:02.9644833Z           "complete": true,
2026-07-26T22:33:02.9644931Z           "evidence": [
2026-07-26T22:33:02.9645036Z             {
2026-07-26T22:33:02.9645181Z               "path": "crates/spt-live/src/echo.rs",
2026-07-26T22:33:02.9645274Z               "line": 25
2026-07-26T22:33:02.9645380Z             },
2026-07-26T22:33:02.9645489Z             {
2026-07-26T22:33:02.9645618Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:02.9645748Z               "line": 26
2026-07-26T22:33:02.9645823Z             },
2026-07-26T22:33:02.9645909Z             {
2026-07-26T22:33:02.9646024Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:02.9646110Z               "line": 282
2026-07-26T22:33:02.9646191Z             }
2026-07-26T22:33:02.9646281Z           ]
2026-07-26T22:33:02.9646363Z         },
2026-07-26T22:33:02.9646457Z         "int": {
2026-07-26T22:33:02.9646552Z           "complete": false,
2026-07-26T22:33:02.9646654Z           "evidence": []
2026-07-26T22:33:02.9646730Z         },
2026-07-26T22:33:02.9646814Z         "unit": {
2026-07-26T22:33:02.9646910Z           "complete": true,
2026-07-26T22:33:02.9646997Z           "evidence": [
2026-07-26T22:33:02.9647078Z             {
2026-07-26T22:33:02.9647196Z               "path": "crates/spt-live/src/echo.rs",
2026-07-26T22:33:02.9647286Z               "line": 222
2026-07-26T22:33:02.9647377Z             },
2026-07-26T22:33:02.9647460Z             {
2026-07-26T22:33:02.9647578Z               "path": "crates/spt-live/src/echo.rs",
2026-07-26T22:33:02.9647670Z               "line": 274
2026-07-26T22:33:02.9647761Z             },
2026-07-26T22:33:02.9647841Z             {
2026-07-26T22:33:02.9647966Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:02.9648056Z               "line": 310
2026-07-26T22:33:02.9648151Z             }
2026-07-26T22:33:02.9648232Z           ]
2026-07-26T22:33:02.9648324Z         }
2026-07-26T22:33:02.9648400Z       }
2026-07-26T22:33:02.9648499Z     },
2026-07-26T22:33:02.9648581Z     {
2026-07-26T22:33:02.9648695Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-07-26T22:33:02.9648862Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-07-26T22:33:02.9649053Z       "requiredStages": [
2026-07-26T22:33:02.9649134Z         "impl",
2026-07-26T22:33:02.9649230Z         "unit"
2026-07-26T22:33:02.9649315Z       ],
2026-07-26T22:33:02.9649410Z       "stages": {
2026-07-26T22:33:02.9649491Z         "doc": {
2026-07-26T22:33:02.9649588Z           "complete": false,
2026-07-26T22:33:02.9649681Z           "evidence": []
2026-07-26T22:33:02.9649758Z         },
2026-07-26T22:33:02.9649841Z         "impl": {
2026-07-26T22:33:02.9649940Z           "complete": true,
2026-07-26T22:33:02.9650034Z           "evidence": [
2026-07-26T22:33:02.9650124Z             {
2026-07-26T22:33:02.9650253Z               "path": "crates/spt-store/src/atomic.rs",
2026-07-26T22:33:02.9650351Z               "line": 57
2026-07-26T22:33:02.9650542Z             },
2026-07-26T22:33:02.9650624Z             {
2026-07-26T22:33:02.9650742Z               "path": "crates/spt-store/src/atomic.rs",
2026-07-26T22:33:02.9650843Z               "line": 73
2026-07-26T22:33:02.9650948Z             },
2026-07-26T22:33:02.9651042Z             {
2026-07-26T22:33:02.9651200Z               "path": "crates/spt-store/src/atomic.rs",
2026-07-26T22:33:02.9651286Z               "line": 92
2026-07-26T22:33:02.9651381Z             },
2026-07-26T22:33:02.9651462Z             {
2026-07-26T22:33:02.9651581Z               "path": "crates/spt-store/src/atomic.rs",
2026-07-26T22:33:02.9651662Z               "line": 144
2026-07-26T22:33:02.9651743Z             },
2026-07-26T22:33:02.9651821Z             {
2026-07-26T22:33:02.9651943Z               "path": "crates/spt-store/src/atomic.rs",
2026-07-26T22:33:02.9652025Z               "line": 161
2026-07-26T22:33:02.9652206Z             }
2026-07-26T22:33:02.9652291Z           ]
2026-07-26T22:33:02.9652383Z         },
2026-07-26T22:33:02.9652474Z         "int": {
2026-07-26T22:33:02.9652577Z           "complete": false,
2026-07-26T22:33:02.9652667Z           "evidence": []
2026-07-26T22:33:02.9652748Z         },
2026-07-26T22:33:02.9652824Z         "unit": {
2026-07-26T22:33:02.9652923Z           "complete": true,
2026-07-26T22:33:02.9653003Z           "evidence": [
2026-07-26T22:33:02.9653085Z             {
2026-07-26T22:33:02.9653195Z               "path": "crates/spt-store/src/atomic.rs",
2026-07-26T22:33:02.9653289Z               "line": 232
2026-07-26T22:33:02.9653375Z             },
2026-07-26T22:33:02.9653457Z             {
2026-07-26T22:33:02.9653571Z               "path": "crates/spt-store/src/atomic.rs",
2026-07-26T22:33:02.9653666Z               "line": 245
2026-07-26T22:33:02.9653743Z             },
2026-07-26T22:33:02.9653829Z             {
2026-07-26T22:33:02.9653938Z               "path": "crates/spt-store/src/atomic.rs",
2026-07-26T22:33:02.9654035Z               "line": 320
2026-07-26T22:33:02.9654120Z             },
2026-07-26T22:33:02.9654215Z             {
2026-07-26T22:33:02.9654320Z               "path": "crates/spt-store/src/atomic.rs",
2026-07-26T22:33:02.9654416Z               "line": 338
2026-07-26T22:33:02.9654487Z             },
2026-07-26T22:33:02.9654572Z             {
2026-07-26T22:33:02.9654679Z               "path": "crates/spt-store/src/atomic.rs",
2026-07-26T22:33:02.9654773Z               "line": 351
2026-07-26T22:33:02.9654854Z             }
2026-07-26T22:33:02.9654940Z           ]
2026-07-26T22:33:02.9655017Z         }
2026-07-26T22:33:02.9655102Z       }
2026-07-26T22:33:02.9655183Z     },
2026-07-26T22:33:02.9655265Z     {
2026-07-26T22:33:02.9655379Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-07-26T22:33:02.9655572Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-07-26T22:33:02.9655673Z       "requiredStages": [
2026-07-26T22:33:02.9655764Z         "impl",
2026-07-26T22:33:02.9655863Z         "unit"
2026-07-26T22:33:02.9655940Z       ],
2026-07-26T22:33:02.9656036Z       "stages": {
2026-07-26T22:33:02.9656121Z         "doc": {
2026-07-26T22:33:02.9656216Z           "complete": false,
2026-07-26T22:33:02.9656313Z           "evidence": []
2026-07-26T22:33:02.9656388Z         },
2026-07-26T22:33:02.9656469Z         "impl": {
2026-07-26T22:33:02.9656569Z           "complete": true,
2026-07-26T22:33:02.9656660Z           "evidence": [
2026-07-26T22:33:02.9656741Z             {
2026-07-26T22:33:02.9656870Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.9656971Z               "line": 1243
2026-07-26T22:33:02.9657050Z             },
2026-07-26T22:33:02.9657136Z             {
2026-07-26T22:33:02.9657252Z               "path": "crates/spt-live/src/signoff.rs",
2026-07-26T22:33:02.9657347Z               "line": 26
2026-07-26T22:33:02.9657432Z             }
2026-07-26T22:33:02.9657513Z           ]
2026-07-26T22:33:02.9657601Z         },
2026-07-26T22:33:02.9657694Z         "int": {
2026-07-26T22:33:02.9657789Z           "complete": false,
2026-07-26T22:33:02.9657970Z           "evidence": []
2026-07-26T22:33:02.9658053Z         },
2026-07-26T22:33:02.9658143Z         "unit": {
2026-07-26T22:33:02.9658235Z           "complete": true,
2026-07-26T22:33:02.9658331Z           "evidence": [
2026-07-26T22:33:02.9658411Z             {
2026-07-26T22:33:02.9658530Z               "path": "crates/spt-live/src/signoff.rs",
2026-07-26T22:33:02.9658621Z               "line": 150
2026-07-26T22:33:02.9658701Z             },
2026-07-26T22:33:02.9658783Z             {
2026-07-26T22:33:02.9658908Z               "path": "crates/spt-live/src/signoff.rs",
2026-07-26T22:33:02.9659069Z               "line": 208
2026-07-26T22:33:02.9659161Z             }
2026-07-26T22:33:02.9659246Z           ]
2026-07-26T22:33:02.9659331Z         }
2026-07-26T22:33:02.9659412Z       }
2026-07-26T22:33:02.9659494Z     },
2026-07-26T22:33:02.9659703Z     {
2026-07-26T22:33:02.9659838Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-07-26T22:33:02.9669110Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-07-26T22:33:02.9669372Z       "requiredStages": [
2026-07-26T22:33:02.9669510Z         "impl",
2026-07-26T22:33:02.9669605Z         "unit",
2026-07-26T22:33:02.9669682Z         "int"
2026-07-26T22:33:02.9669764Z       ],
2026-07-26T22:33:02.9669859Z       "stages": {
2026-07-26T22:33:02.9669939Z         "doc": {
2026-07-26T22:33:02.9670045Z           "complete": false,
2026-07-26T22:33:02.9670135Z           "evidence": []
2026-07-26T22:33:02.9670230Z         },
2026-07-26T22:33:02.9670316Z         "impl": {
2026-07-26T22:33:02.9670417Z           "complete": true,
2026-07-26T22:33:02.9670501Z           "evidence": [
2026-07-26T22:33:02.9670592Z             {
2026-07-26T22:33:02.9670708Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:02.9670807Z               "line": 120
2026-07-26T22:33:02.9670980Z             },
2026-07-26T22:33:02.9671066Z             {
2026-07-26T22:33:02.9671192Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:02.9671293Z               "line": 415
2026-07-26T22:33:02.9671374Z             }
2026-07-26T22:33:02.9671462Z           ]
2026-07-26T22:33:02.9671538Z         },
2026-07-26T22:33:02.9671629Z         "int": {
2026-07-26T22:33:02.9671715Z           "complete": true,
2026-07-26T22:33:02.9671800Z           "evidence": [
2026-07-26T22:33:02.9671886Z             {
2026-07-26T22:33:02.9672034Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:02.9672120Z               "line": 886
2026-07-26T22:33:02.9672196Z             }
2026-07-26T22:33:02.9672283Z           ]
2026-07-26T22:33:02.9672373Z         },
2026-07-26T22:33:02.9672453Z         "unit": {
2026-07-26T22:33:02.9672549Z           "complete": true,
2026-07-26T22:33:02.9672645Z           "evidence": [
2026-07-26T22:33:02.9672720Z             {
2026-07-26T22:33:02.9672849Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:02.9672936Z               "line": 822
2026-07-26T22:33:02.9673025Z             },
2026-07-26T22:33:02.9673106Z             {
2026-07-26T22:33:02.9673227Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:02.9673312Z               "line": 881
2026-07-26T22:33:02.9673402Z             }
2026-07-26T22:33:02.9673479Z           ]
2026-07-26T22:33:02.9673571Z         }
2026-07-26T22:33:02.9673655Z       }
2026-07-26T22:33:02.9673745Z     },
2026-07-26T22:33:02.9673830Z     {
2026-07-26T22:33:02.9673949Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-07-26T22:33:02.9675292Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-07-26T22:33:02.9675401Z       "requiredStages": [
2026-07-26T22:33:02.9675484Z         "doc",
2026-07-26T22:33:02.9675569Z         "impl",
2026-07-26T22:33:02.9675655Z         "unit"
2026-07-26T22:33:02.9675735Z       ],
2026-07-26T22:33:02.9675818Z       "stages": {
2026-07-26T22:33:02.9675912Z         "doc": {
2026-07-26T22:33:02.9675998Z           "complete": true,
2026-07-26T22:33:02.9676089Z           "evidence": [
2026-07-26T22:33:02.9676166Z             {
2026-07-26T22:33:02.9676284Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9676365Z               "line": 221
2026-07-26T22:33:02.9676462Z             }
2026-07-26T22:33:02.9676541Z           ]
2026-07-26T22:33:02.9676626Z         },
2026-07-26T22:33:02.9676712Z         "impl": {
2026-07-26T22:33:02.9676813Z           "complete": true,
2026-07-26T22:33:02.9676908Z           "evidence": [
2026-07-26T22:33:02.9677007Z             {
2026-07-26T22:33:02.9677118Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9677213Z               "line": 67
2026-07-26T22:33:02.9677409Z             },
2026-07-26T22:33:02.9677504Z             {
2026-07-26T22:33:02.9677631Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:02.9677719Z               "line": 734
2026-07-26T22:33:02.9677809Z             },
2026-07-26T22:33:02.9677895Z             {
2026-07-26T22:33:02.9678019Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-07-26T22:33:02.9678105Z               "line": 36
2026-07-26T22:33:02.9678195Z             },
2026-07-26T22:33:02.9678280Z             {
2026-07-26T22:33:02.9678410Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-07-26T22:33:02.9678490Z               "line": 59
2026-07-26T22:33:02.9678576Z             },
2026-07-26T22:33:02.9678653Z             {
2026-07-26T22:33:02.9678777Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-07-26T22:33:02.9679028Z               "line": 83
2026-07-26T22:33:02.9679127Z             },
2026-07-26T22:33:02.9679207Z             {
2026-07-26T22:33:02.9679341Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-07-26T22:33:02.9679433Z               "line": 140
2026-07-26T22:33:02.9679512Z             },
2026-07-26T22:33:02.9679593Z             {
2026-07-26T22:33:02.9679718Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-07-26T22:33:02.9679808Z               "line": 159
2026-07-26T22:33:02.9679898Z             },
2026-07-26T22:33:02.9679966Z             {
2026-07-26T22:33:02.9680090Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-07-26T22:33:02.9680170Z               "line": 384
2026-07-26T22:33:02.9680262Z             },
2026-07-26T22:33:02.9680338Z             {
2026-07-26T22:33:02.9680461Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-07-26T22:33:02.9680552Z               "line": 535
2026-07-26T22:33:02.9680634Z             },
2026-07-26T22:33:02.9680718Z             {
2026-07-26T22:33:02.9680842Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-07-26T22:33:02.9680939Z               "line": 581
2026-07-26T22:33:02.9681024Z             },
2026-07-26T22:33:02.9681101Z             {
2026-07-26T22:33:02.9681221Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:02.9681306Z               "line": 300
2026-07-26T22:33:02.9681395Z             },
2026-07-26T22:33:02.9681477Z             {
2026-07-26T22:33:02.9681578Z               "path": "crates/spt/src/main.rs",
2026-07-26T22:33:02.9681673Z               "line": 87
2026-07-26T22:33:02.9681752Z             }
2026-07-26T22:33:02.9681838Z           ]
2026-07-26T22:33:02.9681919Z         },
2026-07-26T22:33:02.9682004Z         "int": {
2026-07-26T22:33:02.9682098Z           "complete": false,
2026-07-26T22:33:02.9682198Z           "evidence": []
2026-07-26T22:33:02.9682275Z         },
2026-07-26T22:33:02.9682365Z         "unit": {
2026-07-26T22:33:02.9682469Z           "complete": true,
2026-07-26T22:33:02.9682562Z           "evidence": [
2026-07-26T22:33:02.9682633Z             {
2026-07-26T22:33:02.9682746Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-07-26T22:33:02.9682843Z               "line": 813
2026-07-26T22:33:02.9682933Z             },
2026-07-26T22:33:02.9683009Z             {
2026-07-26T22:33:02.9683133Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-07-26T22:33:02.9683229Z               "line": 854
2026-07-26T22:33:02.9683310Z             },
2026-07-26T22:33:02.9683395Z             {
2026-07-26T22:33:02.9683516Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-07-26T22:33:02.9683600Z               "line": 928
2026-07-26T22:33:02.9683686Z             }
2026-07-26T22:33:02.9683763Z           ]
2026-07-26T22:33:02.9683845Z         }
2026-07-26T22:33:02.9683928Z       }
2026-07-26T22:33:02.9684015Z     },
2026-07-26T22:33:02.9684088Z     {
2026-07-26T22:33:02.9684206Z       "id": "REQ-HAZARD-ENDPOINT-LIFECYCLE",
2026-07-26T22:33:02.9686295Z       "title": "REGISTRY-LIFECYCLE W2 (KNOWN-HAZARDS 7.45 — the umbrella conformance seam for ADR-0041): endpoint lifecycle state converges to truth from EVERY death path. Regression matrix from the three hertz reports + operator field: dead-PID hybrid row does not survive reconcile; raw viewport close frees the controller (full chain, broker restart included — shared with REQ-STREAM-LEASE-CLASSES int); definitive death means offline+suspended atomically and the next reconcile emits no WAKE_RESUME; explicit Wake still launches exactly once; poll-vs-reap interleave converges to cleared stamps. HEAVY nextest group at birth for any leg spawning a daemon tree. Gate: int — the matrix; doc — KNOWN-HAZARDS 7.45.",
2026-07-26T22:33:02.9686515Z       "requiredStages": [
2026-07-26T22:33:02.9686601Z         "doc",
2026-07-26T22:33:02.9686673Z         "int"
2026-07-26T22:33:02.9686768Z       ],
2026-07-26T22:33:02.9686849Z       "stages": {
2026-07-26T22:33:02.9686940Z         "doc": {
2026-07-26T22:33:02.9687129Z           "complete": true,
2026-07-26T22:33:02.9687224Z           "evidence": [
2026-07-26T22:33:02.9687310Z             {
2026-07-26T22:33:02.9687430Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9687525Z               "line": 706
2026-07-26T22:33:02.9687611Z             }
2026-07-26T22:33:02.9687692Z           ]
2026-07-26T22:33:02.9687783Z         },
2026-07-26T22:33:02.9687868Z         "impl": {
2026-07-26T22:33:02.9687969Z           "complete": false,
2026-07-26T22:33:02.9688059Z           "evidence": []
2026-07-26T22:33:02.9688149Z         },
2026-07-26T22:33:02.9688231Z         "int": {
2026-07-26T22:33:02.9688340Z           "complete": true,
2026-07-26T22:33:02.9688426Z           "evidence": [
2026-07-26T22:33:02.9688521Z             {
2026-07-26T22:33:02.9688670Z               "path": "crates/spt-daemon/tests/endpoint_lifecycle.rs",
2026-07-26T22:33:02.9688755Z               "line": 173
2026-07-26T22:33:02.9688840Z             },
2026-07-26T22:33:02.9688938Z             {
2026-07-26T22:33:02.9689155Z               "path": "crates/spt-daemon/tests/endpoint_lifecycle.rs",
2026-07-26T22:33:02.9689252Z               "line": 238
2026-07-26T22:33:02.9689333Z             },
2026-07-26T22:33:02.9689426Z             {
2026-07-26T22:33:02.9689560Z               "path": "crates/spt-daemon/tests/endpoint_lifecycle.rs",
2026-07-26T22:33:02.9689659Z               "line": 379
2026-07-26T22:33:02.9689734Z             },
2026-07-26T22:33:02.9689815Z             {
2026-07-26T22:33:02.9689945Z               "path": "crates/spt-daemon/tests/endpoint_lifecycle.rs",
2026-07-26T22:33:02.9690049Z               "line": 494
2026-07-26T22:33:02.9690134Z             },
2026-07-26T22:33:02.9690211Z             {
2026-07-26T22:33:02.9690340Z               "path": "crates/spt-daemon/tests/spawn_truth.rs",
2026-07-26T22:33:02.9690420Z               "line": 318
2026-07-26T22:33:02.9690502Z             }
2026-07-26T22:33:02.9690579Z           ]
2026-07-26T22:33:02.9690664Z         },
2026-07-26T22:33:02.9690754Z         "unit": {
2026-07-26T22:33:02.9690850Z           "complete": false,
2026-07-26T22:33:02.9690941Z           "evidence": []
2026-07-26T22:33:02.9691040Z         }
2026-07-26T22:33:02.9691126Z       }
2026-07-26T22:33:02.9691213Z     },
2026-07-26T22:33:02.9691298Z     {
2026-07-26T22:33:02.9691432Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-07-26T22:33:02.9696393Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-07-26T22:33:02.9696727Z       "requiredStages": [
2026-07-26T22:33:02.9696827Z         "impl",
2026-07-26T22:33:02.9696909Z         "unit",
2026-07-26T22:33:02.9696994Z         "int"
2026-07-26T22:33:02.9697070Z       ],
2026-07-26T22:33:02.9697161Z       "stages": {
2026-07-26T22:33:02.9697243Z         "doc": {
2026-07-26T22:33:02.9697346Z           "complete": false,
2026-07-26T22:33:02.9697442Z           "evidence": []
2026-07-26T22:33:02.9697520Z         },
2026-07-26T22:33:02.9697615Z         "impl": {
2026-07-26T22:33:02.9697713Z           "complete": true,
2026-07-26T22:33:02.9697808Z           "evidence": [
2026-07-26T22:33:02.9697890Z             {
2026-07-26T22:33:02.9698018Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:02.9698108Z               "line": 300
2026-07-26T22:33:02.9698190Z             }
2026-07-26T22:33:02.9698276Z           ]
2026-07-26T22:33:02.9698366Z         },
2026-07-26T22:33:02.9698451Z         "int": {
2026-07-26T22:33:02.9698548Z           "complete": true,
2026-07-26T22:33:02.9698639Z           "evidence": [
2026-07-26T22:33:02.9698733Z             {
2026-07-26T22:33:02.9698868Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-07-26T22:33:02.9699038Z               "line": 316
2026-07-26T22:33:02.9699125Z             }
2026-07-26T22:33:02.9699211Z           ]
2026-07-26T22:33:02.9699287Z         },
2026-07-26T22:33:02.9699382Z         "unit": {
2026-07-26T22:33:02.9699474Z           "complete": true,
2026-07-26T22:33:02.9699568Z           "evidence": [
2026-07-26T22:33:02.9699653Z             {
2026-07-26T22:33:02.9699778Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:02.9699859Z               "line": 468
2026-07-26T22:33:02.9699939Z             }
2026-07-26T22:33:02.9700024Z           ]
2026-07-26T22:33:02.9700110Z         }
2026-07-26T22:33:02.9700191Z       }
2026-07-26T22:33:02.9700285Z     },
2026-07-26T22:33:02.9700370Z     {
2026-07-26T22:33:02.9700475Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-07-26T22:33:02.9703833Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-07-26T22:33:02.9704063Z       "requiredStages": [
2026-07-26T22:33:02.9704148Z         "impl",
2026-07-26T22:33:02.9704229Z         "unit",
2026-07-26T22:33:02.9704321Z         "int"
2026-07-26T22:33:02.9704396Z       ],
2026-07-26T22:33:02.9704491Z       "stages": {
2026-07-26T22:33:02.9704573Z         "doc": {
2026-07-26T22:33:02.9704664Z           "complete": false,
2026-07-26T22:33:02.9704743Z           "evidence": []
2026-07-26T22:33:02.9704868Z         },
2026-07-26T22:33:02.9704955Z         "impl": {
2026-07-26T22:33:02.9705058Z           "complete": true,
2026-07-26T22:33:02.9705145Z           "evidence": [
2026-07-26T22:33:02.9705232Z             {
2026-07-26T22:33:02.9705373Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:02.9705559Z               "line": 159
2026-07-26T22:33:02.9705644Z             },
2026-07-26T22:33:02.9705728Z             {
2026-07-26T22:33:02.9705857Z               "path": "crates/spt-term/src/pty.rs",
2026-07-26T22:33:02.9705943Z               "line": 134
2026-07-26T22:33:02.9706061Z             }
2026-07-26T22:33:02.9706176Z           ]
2026-07-26T22:33:02.9706305Z         },
2026-07-26T22:33:02.9706390Z         "int": {
2026-07-26T22:33:02.9706506Z           "complete": true,
2026-07-26T22:33:02.9706663Z           "evidence": [
2026-07-26T22:33:02.9706762Z             {
2026-07-26T22:33:02.9706892Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-07-26T22:33:02.9706982Z               "line": 322
2026-07-26T22:33:02.9707058Z             },
2026-07-26T22:33:02.9707154Z             {
2026-07-26T22:33:02.9707282Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-07-26T22:33:02.9707368Z               "line": 544
2026-07-26T22:33:02.9707465Z             }
2026-07-26T22:33:02.9707555Z           ]
2026-07-26T22:33:02.9707640Z         },
2026-07-26T22:33:02.9707726Z         "unit": {
2026-07-26T22:33:02.9707827Z           "complete": true,
2026-07-26T22:33:02.9707912Z           "evidence": [
2026-07-26T22:33:02.9708017Z             {
2026-07-26T22:33:02.9708156Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:02.9708250Z               "line": 524
2026-07-26T22:33:02.9708335Z             }
2026-07-26T22:33:02.9708421Z           ]
2026-07-26T22:33:02.9708507Z         }
2026-07-26T22:33:02.9708588Z       }
2026-07-26T22:33:02.9708683Z     },
2026-07-26T22:33:02.9708755Z     {
2026-07-26T22:33:02.9708870Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-07-26T22:33:02.9710714Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-07-26T22:33:02.9710821Z       "requiredStages": [
2026-07-26T22:33:02.9710911Z         "impl",
2026-07-26T22:33:02.9710997Z         "unit",
2026-07-26T22:33:02.9711089Z         "doc"
2026-07-26T22:33:02.9711169Z       ],
2026-07-26T22:33:02.9711254Z       "stages": {
2026-07-26T22:33:02.9711336Z         "doc": {
2026-07-26T22:33:02.9711441Z           "complete": true,
2026-07-26T22:33:02.9711531Z           "evidence": [
2026-07-26T22:33:02.9711608Z             {
2026-07-26T22:33:02.9711737Z               "path": "docs-site/src/shells/frames.md",
2026-07-26T22:33:02.9711831Z               "line": 73
2026-07-26T22:33:02.9711918Z             }
2026-07-26T22:33:02.9712013Z           ]
2026-07-26T22:33:02.9712099Z         },
2026-07-26T22:33:02.9712180Z         "impl": {
2026-07-26T22:33:02.9712276Z           "complete": true,
2026-07-26T22:33:02.9712490Z           "evidence": [
2026-07-26T22:33:02.9712576Z             {
2026-07-26T22:33:02.9712699Z               "path": "crates/spt-proto/src/envelope.rs",
2026-07-26T22:33:02.9712781Z               "line": 31
2026-07-26T22:33:02.9712862Z             }
2026-07-26T22:33:02.9712939Z           ]
2026-07-26T22:33:02.9713019Z         },
2026-07-26T22:33:02.9713105Z         "int": {
2026-07-26T22:33:02.9713206Z           "complete": false,
2026-07-26T22:33:02.9713297Z           "evidence": []
2026-07-26T22:33:02.9713376Z         },
2026-07-26T22:33:02.9713456Z         "unit": {
2026-07-26T22:33:02.9713557Z           "complete": true,
2026-07-26T22:33:02.9713651Z           "evidence": [
2026-07-26T22:33:02.9713736Z             {
2026-07-26T22:33:02.9713850Z               "path": "crates/spt-proto/src/envelope.rs",
2026-07-26T22:33:02.9714046Z               "line": 181
2026-07-26T22:33:02.9714126Z             }
2026-07-26T22:33:02.9714218Z           ]
2026-07-26T22:33:02.9714299Z         }
2026-07-26T22:33:02.9714389Z       }
2026-07-26T22:33:02.9714475Z     },
2026-07-26T22:33:02.9714556Z     {
2026-07-26T22:33:02.9714685Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-07-26T22:33:02.9714843Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-07-26T22:33:02.9714947Z       "requiredStages": [
2026-07-26T22:33:02.9715033Z         "impl",
2026-07-26T22:33:02.9715119Z         "unit",
2026-07-26T22:33:02.9715200Z         "doc"
2026-07-26T22:33:02.9715281Z       ],
2026-07-26T22:33:02.9715366Z       "stages": {
2026-07-26T22:33:02.9715468Z         "doc": {
2026-07-26T22:33:02.9715553Z           "complete": true,
2026-07-26T22:33:02.9715647Z           "evidence": [
2026-07-26T22:33:02.9715729Z             {
2026-07-26T22:33:02.9715854Z               "path": "docs-site/src/shells/frames.md",
2026-07-26T22:33:02.9715952Z               "line": 79
2026-07-26T22:33:02.9716052Z             }
2026-07-26T22:33:02.9716128Z           ]
2026-07-26T22:33:02.9716213Z         },
2026-07-26T22:33:02.9716312Z         "impl": {
2026-07-26T22:33:02.9716412Z           "complete": true,
2026-07-26T22:33:02.9716494Z           "evidence": [
2026-07-26T22:33:02.9716575Z             {
2026-07-26T22:33:02.9716698Z               "path": "crates/spt-proto/src/envelope.rs",
2026-07-26T22:33:02.9716790Z               "line": 49
2026-07-26T22:33:02.9716865Z             },
2026-07-26T22:33:02.9716946Z             {
2026-07-26T22:33:02.9717051Z               "path": "crates/spt-proto/src/envelope.rs",
2026-07-26T22:33:02.9717152Z               "line": 81
2026-07-26T22:33:02.9717228Z             }
2026-07-26T22:33:02.9717308Z           ]
2026-07-26T22:33:02.9717390Z         },
2026-07-26T22:33:02.9717471Z         "int": {
2026-07-26T22:33:02.9717571Z           "complete": false,
2026-07-26T22:33:02.9717666Z           "evidence": []
2026-07-26T22:33:02.9717753Z         },
2026-07-26T22:33:02.9717847Z         "unit": {
2026-07-26T22:33:02.9717947Z           "complete": true,
2026-07-26T22:33:02.9718048Z           "evidence": [
2026-07-26T22:33:02.9718134Z             {
2026-07-26T22:33:02.9718247Z               "path": "crates/spt-proto/src/envelope.rs",
2026-07-26T22:33:02.9718335Z               "line": 156
2026-07-26T22:33:02.9718430Z             },
2026-07-26T22:33:02.9718514Z             {
2026-07-26T22:33:02.9718640Z               "path": "crates/spt-proto/src/envelope.rs",
2026-07-26T22:33:02.9718731Z               "line": 173
2026-07-26T22:33:02.9718824Z             },
2026-07-26T22:33:02.9718895Z             {
2026-07-26T22:33:02.9719097Z               "path": "crates/spt-proto/src/envelope.rs",
2026-07-26T22:33:02.9719186Z               "line": 196
2026-07-26T22:33:02.9719281Z             }
2026-07-26T22:33:02.9719368Z           ]
2026-07-26T22:33:02.9719463Z         }
2026-07-26T22:33:02.9719558Z       }
2026-07-26T22:33:02.9719659Z     },
2026-07-26T22:33:02.9719749Z     {
2026-07-26T22:33:02.9719872Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-07-26T22:33:02.9720064Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-07-26T22:33:02.9720279Z       "requiredStages": [
2026-07-26T22:33:02.9720369Z         "impl",
2026-07-26T22:33:02.9720450Z         "unit"
2026-07-26T22:33:02.9720575Z       ],
2026-07-26T22:33:02.9720656Z       "stages": {
2026-07-26T22:33:02.9720740Z         "doc": {
2026-07-26T22:33:02.9720841Z           "complete": false,
2026-07-26T22:33:02.9720938Z           "evidence": []
2026-07-26T22:33:02.9721022Z         },
2026-07-26T22:33:02.9721112Z         "impl": {
2026-07-26T22:33:02.9721197Z           "complete": true,
2026-07-26T22:33:02.9721293Z           "evidence": [
2026-07-26T22:33:02.9721376Z             {
2026-07-26T22:33:02.9721504Z               "path": "crates/spt-proto/src/envelope.rs",
2026-07-26T22:33:02.9721591Z               "line": 120
2026-07-26T22:33:02.9721682Z             }
2026-07-26T22:33:02.9721858Z           ]
2026-07-26T22:33:02.9721944Z         },
2026-07-26T22:33:02.9722029Z         "int": {
2026-07-26T22:33:02.9722129Z           "complete": false,
2026-07-26T22:33:02.9722221Z           "evidence": []
2026-07-26T22:33:02.9722311Z         },
2026-07-26T22:33:02.9722391Z         "unit": {
2026-07-26T22:33:02.9722492Z           "complete": true,
2026-07-26T22:33:02.9722587Z           "evidence": [
2026-07-26T22:33:02.9722668Z             {
2026-07-26T22:33:02.9722792Z               "path": "crates/spt-proto/src/envelope.rs",
2026-07-26T22:33:02.9722893Z               "line": 212
2026-07-26T22:33:02.9722974Z             },
2026-07-26T22:33:02.9723055Z             {
2026-07-26T22:33:02.9723175Z               "path": "crates/spt-proto/src/envelope.rs",
2026-07-26T22:33:02.9723269Z               "line": 221
2026-07-26T22:33:02.9723350Z             },
2026-07-26T22:33:02.9723427Z             {
2026-07-26T22:33:02.9723546Z               "path": "crates/spt-proto/src/envelope.rs",
2026-07-26T22:33:02.9723655Z               "line": 229
2026-07-26T22:33:02.9723732Z             },
2026-07-26T22:33:02.9723829Z             {
2026-07-26T22:33:02.9723955Z               "path": "crates/spt-proto/src/envelope.rs",
2026-07-26T22:33:02.9724059Z               "line": 239
2026-07-26T22:33:02.9724150Z             },
2026-07-26T22:33:02.9724258Z             {
2026-07-26T22:33:02.9724381Z               "path": "crates/spt-proto/src/envelope.rs",
2026-07-26T22:33:02.9724477Z               "line": 249
2026-07-26T22:33:02.9724549Z             }
2026-07-26T22:33:02.9724634Z           ]
2026-07-26T22:33:02.9724710Z         }
2026-07-26T22:33:02.9724802Z       }
2026-07-26T22:33:02.9724883Z     },
2026-07-26T22:33:02.9724973Z     {
2026-07-26T22:33:02.9725088Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-07-26T22:33:02.9725254Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-07-26T22:33:02.9725355Z       "requiredStages": [
2026-07-26T22:33:02.9725436Z         "impl",
2026-07-26T22:33:02.9725535Z         "unit"
2026-07-26T22:33:02.9725621Z       ],
2026-07-26T22:33:02.9725713Z       "stages": {
2026-07-26T22:33:02.9725803Z         "doc": {
2026-07-26T22:33:02.9725898Z           "complete": false,
2026-07-26T22:33:02.9725984Z           "evidence": []
2026-07-26T22:33:02.9726070Z         },
2026-07-26T22:33:02.9726160Z         "impl": {
2026-07-26T22:33:02.9726260Z           "complete": true,
2026-07-26T22:33:02.9726352Z           "evidence": [
2026-07-26T22:33:02.9726475Z             {
2026-07-26T22:33:02.9726640Z               "path": "crates/spt-msg/src/ring.rs",
2026-07-26T22:33:02.9726764Z               "line": 14
2026-07-26T22:33:02.9726862Z             },
2026-07-26T22:33:02.9726977Z             {
2026-07-26T22:33:02.9727144Z               "path": "crates/spt-msg/src/ring.rs",
2026-07-26T22:33:02.9727272Z               "line": 63
2026-07-26T22:33:02.9727416Z             }
2026-07-26T22:33:02.9727596Z           ]
2026-07-26T22:33:02.9727717Z         },
2026-07-26T22:33:02.9727854Z         "int": {
2026-07-26T22:33:02.9727969Z           "complete": false,
2026-07-26T22:33:02.9728069Z           "evidence": []
2026-07-26T22:33:02.9728265Z         },
2026-07-26T22:33:02.9728351Z         "unit": {
2026-07-26T22:33:02.9728441Z           "complete": true,
2026-07-26T22:33:02.9728531Z           "evidence": [
2026-07-26T22:33:02.9728613Z             {
2026-07-26T22:33:02.9728731Z               "path": "crates/spt-msg/src/ring.rs",
2026-07-26T22:33:02.9728812Z               "line": 168
2026-07-26T22:33:02.9728895Z             },
2026-07-26T22:33:02.9729051Z             {
2026-07-26T22:33:02.9729166Z               "path": "crates/spt-msg/src/ring.rs",
2026-07-26T22:33:02.9729248Z               "line": 202
2026-07-26T22:33:02.9729333Z             },
2026-07-26T22:33:02.9729417Z             {
2026-07-26T22:33:02.9729527Z               "path": "crates/spt-msg/src/ring.rs",
2026-07-26T22:33:02.9729604Z               "line": 224
2026-07-26T22:33:02.9729699Z             }
2026-07-26T22:33:02.9729894Z           ]
2026-07-26T22:33:02.9729970Z         }
2026-07-26T22:33:02.9730047Z       }
2026-07-26T22:33:02.9730132Z     },
2026-07-26T22:33:02.9730229Z     {
2026-07-26T22:33:02.9730343Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-07-26T22:33:02.9731709Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-07-26T22:33:02.9731819Z       "requiredStages": [],
2026-07-26T22:33:02.9731913Z       "stages": {
2026-07-26T22:33:02.9732022Z         "doc": {
2026-07-26T22:33:02.9732108Z           "complete": true,
2026-07-26T22:33:02.9732214Z           "evidence": [
2026-07-26T22:33:02.9732341Z             {
2026-07-26T22:33:02.9732461Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9732562Z               "line": 172
2026-07-26T22:33:02.9732651Z             }
2026-07-26T22:33:02.9732767Z           ]
2026-07-26T22:33:02.9732852Z         },
2026-07-26T22:33:02.9732985Z         "impl": {
2026-07-26T22:33:02.9733110Z           "complete": false,
2026-07-26T22:33:02.9733210Z           "evidence": []
2026-07-26T22:33:02.9733285Z         },
2026-07-26T22:33:02.9733391Z         "int": {
2026-07-26T22:33:02.9737153Z           "complete": false,
2026-07-26T22:33:02.9737281Z           "evidence": []
2026-07-26T22:33:02.9737366Z         },
2026-07-26T22:33:02.9737465Z         "unit": {
2026-07-26T22:33:02.9737566Z           "complete": false,
2026-07-26T22:33:02.9737667Z           "evidence": []
2026-07-26T22:33:02.9737756Z         }
2026-07-26T22:33:02.9737851Z       }
2026-07-26T22:33:02.9737938Z     },
2026-07-26T22:33:02.9738033Z     {
2026-07-26T22:33:02.9738161Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-07-26T22:33:02.9738400Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-07-26T22:33:02.9738501Z       "requiredStages": [
2026-07-26T22:33:02.9738606Z         "doc",
2026-07-26T22:33:02.9738696Z         "impl",
2026-07-26T22:33:02.9738786Z         "unit"
2026-07-26T22:33:02.9738859Z       ],
2026-07-26T22:33:02.9739025Z       "stages": {
2026-07-26T22:33:02.9739106Z         "doc": {
2026-07-26T22:33:02.9739212Z           "complete": true,
2026-07-26T22:33:02.9739310Z           "evidence": [
2026-07-26T22:33:02.9739392Z             {
2026-07-26T22:33:02.9739541Z               "path": "docs-site/src/messaging/overview.md",
2026-07-26T22:33:02.9739644Z               "line": 128
2026-07-26T22:33:02.9739731Z             }
2026-07-26T22:33:02.9739817Z           ]
2026-07-26T22:33:02.9739893Z         },
2026-07-26T22:33:02.9739977Z         "impl": {
2026-07-26T22:33:02.9740072Z           "complete": true,
2026-07-26T22:33:02.9740154Z           "evidence": [
2026-07-26T22:33:02.9740231Z             {
2026-07-26T22:33:02.9740354Z               "path": "crates/spt-proto/src/chunk.rs",
2026-07-26T22:33:02.9740598Z               "line": 76
2026-07-26T22:33:02.9740673Z             },
2026-07-26T22:33:02.9740755Z             {
2026-07-26T22:33:02.9740859Z               "path": "crates/spt-proto/src/chunk.rs",
2026-07-26T22:33:02.9740950Z               "line": 167
2026-07-26T22:33:02.9741026Z             },
2026-07-26T22:33:02.9741113Z             {
2026-07-26T22:33:02.9741227Z               "path": "crates/spt-proto/src/chunk.rs",
2026-07-26T22:33:02.9741322Z               "line": 233
2026-07-26T22:33:02.9741394Z             },
2026-07-26T22:33:02.9741494Z             {
2026-07-26T22:33:02.9741608Z               "path": "crates/spt-proto/src/chunk.rs",
2026-07-26T22:33:02.9741685Z               "line": 272
2026-07-26T22:33:02.9741771Z             }
2026-07-26T22:33:02.9741846Z           ]
2026-07-26T22:33:02.9741927Z         },
2026-07-26T22:33:02.9742019Z         "int": {
2026-07-26T22:33:02.9742213Z           "complete": false,
2026-07-26T22:33:02.9742312Z           "evidence": []
2026-07-26T22:33:02.9742394Z         },
2026-07-26T22:33:02.9742492Z         "unit": {
2026-07-26T22:33:02.9742587Z           "complete": true,
2026-07-26T22:33:02.9742682Z           "evidence": [
2026-07-26T22:33:02.9742759Z             {
2026-07-26T22:33:02.9742877Z               "path": "crates/spt-proto/src/chunk.rs",
2026-07-26T22:33:02.9742959Z               "line": 321
2026-07-26T22:33:02.9743046Z             },
2026-07-26T22:33:02.9743131Z             {
2026-07-26T22:33:02.9743249Z               "path": "crates/spt-proto/src/chunk.rs",
2026-07-26T22:33:02.9743341Z               "line": 329
2026-07-26T22:33:02.9743431Z             },
2026-07-26T22:33:02.9743502Z             {
2026-07-26T22:33:02.9743618Z               "path": "crates/spt-proto/src/chunk.rs",
2026-07-26T22:33:02.9743699Z               "line": 356
2026-07-26T22:33:02.9743794Z             },
2026-07-26T22:33:02.9743879Z             {
2026-07-26T22:33:02.9744004Z               "path": "crates/spt-proto/src/chunk.rs",
2026-07-26T22:33:02.9744084Z               "line": 395
2026-07-26T22:33:02.9744184Z             },
2026-07-26T22:33:02.9744262Z             {
2026-07-26T22:33:02.9744380Z               "path": "crates/spt-proto/src/chunk.rs",
2026-07-26T22:33:02.9744470Z               "line": 406
2026-07-26T22:33:02.9744557Z             },
2026-07-26T22:33:02.9744643Z             {
2026-07-26T22:33:02.9744751Z               "path": "crates/spt-proto/src/chunk.rs",
2026-07-26T22:33:02.9744847Z               "line": 418
2026-07-26T22:33:02.9744930Z             },
2026-07-26T22:33:02.9745010Z             {
2026-07-26T22:33:02.9745123Z               "path": "crates/spt-proto/src/chunk.rs",
2026-07-26T22:33:02.9745213Z               "line": 442
2026-07-26T22:33:02.9745294Z             }
2026-07-26T22:33:02.9745373Z           ]
2026-07-26T22:33:02.9745454Z         }
2026-07-26T22:33:02.9745540Z       }
2026-07-26T22:33:02.9745617Z     },
2026-07-26T22:33:02.9745707Z     {
2026-07-26T22:33:02.9745811Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-07-26T22:33:02.9745965Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-07-26T22:33:02.9746069Z       "requiredStages": [
2026-07-26T22:33:02.9746165Z         "impl",
2026-07-26T22:33:02.9746242Z         "int"
2026-07-26T22:33:02.9746332Z       ],
2026-07-26T22:33:02.9746412Z       "stages": {
2026-07-26T22:33:02.9746499Z         "doc": {
2026-07-26T22:33:02.9746594Z           "complete": false,
2026-07-26T22:33:02.9746689Z           "evidence": []
2026-07-26T22:33:02.9746775Z         },
2026-07-26T22:33:02.9746867Z         "impl": {
2026-07-26T22:33:02.9746946Z           "complete": true,
2026-07-26T22:33:02.9747032Z           "evidence": [
2026-07-26T22:33:02.9747109Z             {
2026-07-26T22:33:02.9747238Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.9747323Z               "line": 22
2026-07-26T22:33:02.9747400Z             }
2026-07-26T22:33:02.9747487Z           ]
2026-07-26T22:33:02.9747576Z         },
2026-07-26T22:33:02.9747652Z         "int": {
2026-07-26T22:33:02.9747751Z           "complete": true,
2026-07-26T22:33:02.9747921Z           "evidence": [
2026-07-26T22:33:02.9748006Z             {
2026-07-26T22:33:02.9748126Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-07-26T22:33:02.9748222Z               "line": 18
2026-07-26T22:33:02.9748312Z             }
2026-07-26T22:33:02.9748398Z           ]
2026-07-26T22:33:02.9748479Z         },
2026-07-26T22:33:02.9748570Z         "unit": {
2026-07-26T22:33:02.9748664Z           "complete": false,
2026-07-26T22:33:02.9748756Z           "evidence": []
2026-07-26T22:33:02.9748841Z         }
2026-07-26T22:33:02.9748927Z       }
2026-07-26T22:33:02.9749099Z     },
2026-07-26T22:33:02.9749194Z     {
2026-07-26T22:33:02.9749303Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-07-26T22:33:02.9749513Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-07-26T22:33:02.9749715Z       "requiredStages": [
2026-07-26T22:33:02.9749795Z         "impl",
2026-07-26T22:33:02.9749871Z         "unit"
2026-07-26T22:33:02.9749966Z       ],
2026-07-26T22:33:02.9750049Z       "stages": {
2026-07-26T22:33:02.9750133Z         "doc": {
2026-07-26T22:33:02.9750229Z           "complete": false,
2026-07-26T22:33:02.9750311Z           "evidence": []
2026-07-26T22:33:02.9750401Z         },
2026-07-26T22:33:02.9750481Z         "impl": {
2026-07-26T22:33:02.9750575Z           "complete": true,
2026-07-26T22:33:02.9750656Z           "evidence": [
2026-07-26T22:33:02.9750748Z             {
2026-07-26T22:33:02.9750866Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.9750961Z               "line": 1242
2026-07-26T22:33:02.9751039Z             },
2026-07-26T22:33:02.9751134Z             {
2026-07-26T22:33:02.9751257Z               "path": "crates/spt-live/src/signoff.rs",
2026-07-26T22:33:02.9751349Z               "line": 27
2026-07-26T22:33:02.9751439Z             }
2026-07-26T22:33:02.9751529Z           ]
2026-07-26T22:33:02.9751610Z         },
2026-07-26T22:33:02.9751692Z         "int": {
2026-07-26T22:33:02.9751792Z           "complete": false,
2026-07-26T22:33:02.9751882Z           "evidence": []
2026-07-26T22:33:02.9751964Z         },
2026-07-26T22:33:02.9752054Z         "unit": {
2026-07-26T22:33:02.9752140Z           "complete": true,
2026-07-26T22:33:02.9752240Z           "evidence": [
2026-07-26T22:33:02.9752322Z             {
2026-07-26T22:33:02.9752449Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.9752531Z               "line": 2561
2026-07-26T22:33:02.9752627Z             },
2026-07-26T22:33:02.9752702Z             {
2026-07-26T22:33:02.9752821Z               "path": "crates/spt-live/src/signoff.rs",
2026-07-26T22:33:02.9752921Z               "line": 181
2026-07-26T22:33:02.9753001Z             }
2026-07-26T22:33:02.9753080Z           ]
2026-07-26T22:33:02.9753171Z         }
2026-07-26T22:33:02.9753257Z       }
2026-07-26T22:33:02.9753354Z     },
2026-07-26T22:33:02.9753428Z     {
2026-07-26T22:33:02.9753548Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-07-26T22:33:02.9753724Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-07-26T22:33:02.9753819Z       "requiredStages": [
2026-07-26T22:33:02.9753911Z         "impl",
2026-07-26T22:33:02.9754001Z         "unit"
2026-07-26T22:33:02.9754072Z       ],
2026-07-26T22:33:02.9754163Z       "stages": {
2026-07-26T22:33:02.9754250Z         "doc": {
2026-07-26T22:33:02.9754349Z           "complete": false,
2026-07-26T22:33:02.9754434Z           "evidence": []
2026-07-26T22:33:02.9754521Z         },
2026-07-26T22:33:02.9754597Z         "impl": {
2026-07-26T22:33:02.9754697Z           "complete": true,
2026-07-26T22:33:02.9754787Z           "evidence": [
2026-07-26T22:33:02.9754874Z             {
2026-07-26T22:33:02.9754997Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9755088Z               "line": 73
2026-07-26T22:33:02.9755180Z             },
2026-07-26T22:33:02.9755264Z             {
2026-07-26T22:33:02.9755398Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9755593Z               "line": 1139
2026-07-26T22:33:02.9755688Z             },
2026-07-26T22:33:02.9755769Z             {
2026-07-26T22:33:02.9755892Z               "path": "crates/spt-daemon/src/frame.rs",
2026-07-26T22:33:02.9755971Z               "line": 20
2026-07-26T22:33:02.9756052Z             },
2026-07-26T22:33:02.9756129Z             {
2026-07-26T22:33:02.9756248Z               "path": "crates/spt-daemon/src/frame.rs",
2026-07-26T22:33:02.9756333Z               "line": 100
2026-07-26T22:33:02.9756424Z             },
2026-07-26T22:33:02.9756501Z             {
2026-07-26T22:33:02.9756624Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.9756710Z               "line": 1030
2026-07-26T22:33:02.9756788Z             },
2026-07-26T22:33:02.9756863Z             {
2026-07-26T22:33:02.9757083Z               "path": "crates/spt-daemon/src/transport.rs",
2026-07-26T22:33:02.9757163Z               "line": 68
2026-07-26T22:33:02.9757244Z             },
2026-07-26T22:33:02.9757325Z             {
2026-07-26T22:33:02.9757455Z               "path": "crates/spt-daemon/src/transport.rs",
2026-07-26T22:33:02.9757535Z               "line": 80
2026-07-26T22:33:02.9757616Z             }
2026-07-26T22:33:02.9757698Z           ]
2026-07-26T22:33:02.9757784Z         },
2026-07-26T22:33:02.9757869Z         "int": {
2026-07-26T22:33:02.9757965Z           "complete": true,
2026-07-26T22:33:02.9758047Z           "evidence": [
2026-07-26T22:33:02.9758122Z             {
2026-07-26T22:33:02.9758240Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-07-26T22:33:02.9758335Z               "line": 44
2026-07-26T22:33:02.9758416Z             }
2026-07-26T22:33:02.9758509Z           ]
2026-07-26T22:33:02.9758590Z         },
2026-07-26T22:33:02.9758681Z         "unit": {
2026-07-26T22:33:02.9758777Z           "complete": true,
2026-07-26T22:33:02.9758881Z           "evidence": [
2026-07-26T22:33:02.9759044Z             {
2026-07-26T22:33:02.9759172Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9759267Z               "line": 1352
2026-07-26T22:33:02.9759373Z             },
2026-07-26T22:33:02.9759449Z             {
2026-07-26T22:33:02.9759567Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:02.9759660Z               "line": 1368
2026-07-26T22:33:02.9759740Z             },
2026-07-26T22:33:02.9759825Z             {
2026-07-26T22:33:02.9759945Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9760045Z               "line": 6554
2026-07-26T22:33:02.9760126Z             },
2026-07-26T22:33:02.9760207Z             {
2026-07-26T22:33:02.9760336Z               "path": "crates/spt-daemon/src/frame.rs",
2026-07-26T22:33:02.9760436Z               "line": 152
2026-07-26T22:33:02.9760521Z             },
2026-07-26T22:33:02.9760604Z             {
2026-07-26T22:33:02.9760721Z               "path": "crates/spt-daemon/src/frame.rs",
2026-07-26T22:33:02.9760822Z               "line": 175
2026-07-26T22:33:02.9760899Z             },
2026-07-26T22:33:02.9760990Z             {
2026-07-26T22:33:02.9761103Z               "path": "crates/spt-daemon/src/frame.rs",
2026-07-26T22:33:02.9761198Z               "line": 186
2026-07-26T22:33:02.9761279Z             },
2026-07-26T22:33:02.9761356Z             {
2026-07-26T22:33:02.9761474Z               "path": "crates/spt-daemon/src/frame.rs",
2026-07-26T22:33:02.9761565Z               "line": 202
2026-07-26T22:33:02.9761642Z             },
2026-07-26T22:33:02.9761736Z             {
2026-07-26T22:33:02.9761841Z               "path": "crates/spt-daemon/src/frame.rs",
2026-07-26T22:33:02.9761938Z               "line": 216
2026-07-26T22:33:02.9762061Z             },
2026-07-26T22:33:02.9762190Z             {
2026-07-26T22:33:02.9762385Z               "path": "crates/spt-daemon/src/transport.rs",
2026-07-26T22:33:02.9762572Z               "line": 137
2026-07-26T22:33:02.9762657Z             },
2026-07-26T22:33:02.9762742Z             {
2026-07-26T22:33:02.9762853Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9763202Z               "line": 15695
2026-07-26T22:33:02.9763281Z             },
2026-07-26T22:33:02.9763381Z             {
2026-07-26T22:33:02.9763490Z               "path": "crates/spt/tests/n1_compat.rs",
2026-07-26T22:33:02.9763575Z               "line": 30
2026-07-26T22:33:02.9763655Z             },
2026-07-26T22:33:02.9763736Z             {
2026-07-26T22:33:02.9763851Z               "path": "crates/spt/tests/n1_compat.rs",
2026-07-26T22:33:02.9763946Z               "line": 73
2026-07-26T22:33:02.9764026Z             }
2026-07-26T22:33:02.9764108Z           ]
2026-07-26T22:33:02.9764185Z         }
2026-07-26T22:33:02.9764270Z       }
2026-07-26T22:33:02.9764350Z     },
2026-07-26T22:33:02.9764433Z     {
2026-07-26T22:33:02.9764556Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-07-26T22:33:02.9768729Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-07-26T22:33:02.9768876Z       "requiredStages": [
2026-07-26T22:33:02.9769051Z         "impl",
2026-07-26T22:33:02.9769146Z         "unit",
2026-07-26T22:33:02.9769227Z         "int"
2026-07-26T22:33:02.9769318Z       ],
2026-07-26T22:33:02.9769398Z       "stages": {
2026-07-26T22:33:02.9769479Z         "doc": {
2026-07-26T22:33:02.9769581Z           "complete": false,
2026-07-26T22:33:02.9769676Z           "evidence": []
2026-07-26T22:33:02.9769751Z         },
2026-07-26T22:33:02.9769847Z         "impl": {
2026-07-26T22:33:02.9769938Z           "complete": true,
2026-07-26T22:33:02.9770028Z           "evidence": [
2026-07-26T22:33:02.9770109Z             {
2026-07-26T22:33:02.9770253Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.9770348Z               "line": 703
2026-07-26T22:33:02.9770442Z             },
2026-07-26T22:33:02.9770530Z             {
2026-07-26T22:33:02.9770648Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.9770738Z               "line": 1203
2026-07-26T22:33:02.9770830Z             }
2026-07-26T22:33:02.9770910Z           ]
2026-07-26T22:33:02.9770996Z         },
2026-07-26T22:33:02.9771077Z         "int": {
2026-07-26T22:33:02.9771174Z           "complete": true,
2026-07-26T22:33:02.9771267Z           "evidence": [
2026-07-26T22:33:02.9771344Z             {
2026-07-26T22:33:02.9771464Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.9771559Z               "line": 1823
2026-07-26T22:33:02.9771639Z             },
2026-07-26T22:33:02.9771714Z             {
2026-07-26T22:33:02.9771839Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-07-26T22:33:02.9771944Z               "line": 315
2026-07-26T22:33:02.9772029Z             }
2026-07-26T22:33:02.9772111Z           ]
2026-07-26T22:33:02.9772301Z         },
2026-07-26T22:33:02.9772397Z         "unit": {
2026-07-26T22:33:02.9772488Z           "complete": true,
2026-07-26T22:33:02.9772583Z           "evidence": [
2026-07-26T22:33:02.9772668Z             {
2026-07-26T22:33:02.9772784Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.9772879Z               "line": 1284
2026-07-26T22:33:02.9772964Z             }
2026-07-26T22:33:02.9773041Z           ]
2026-07-26T22:33:02.9773122Z         }
2026-07-26T22:33:02.9773203Z       }
2026-07-26T22:33:02.9773289Z     },
2026-07-26T22:33:02.9773365Z     {
2026-07-26T22:33:02.9773480Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-07-26T22:33:02.9773729Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-07-26T22:33:02.9773832Z       "requiredStages": [
2026-07-26T22:33:02.9774017Z         "impl",
2026-07-26T22:33:02.9774117Z         "unit"
2026-07-26T22:33:02.9774196Z       ],
2026-07-26T22:33:02.9774281Z       "stages": {
2026-07-26T22:33:02.9774377Z         "doc": {
2026-07-26T22:33:02.9774478Z           "complete": true,
2026-07-26T22:33:02.9774572Z           "evidence": [
2026-07-26T22:33:02.9774663Z             {
2026-07-26T22:33:02.9774821Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9774920Z               "line": 140
2026-07-26T22:33:02.9775012Z             }
2026-07-26T22:33:02.9775093Z           ]
2026-07-26T22:33:02.9775188Z         },
2026-07-26T22:33:02.9775269Z         "impl": {
2026-07-26T22:33:02.9775370Z           "complete": true,
2026-07-26T22:33:02.9775455Z           "evidence": [
2026-07-26T22:33:02.9775544Z             {
2026-07-26T22:33:02.9775660Z               "path": "crates/spt-msg/src/ready.rs",
2026-07-26T22:33:02.9775760Z               "line": 65
2026-07-26T22:33:02.9775841Z             },
2026-07-26T22:33:02.9775937Z             {
2026-07-26T22:33:02.9776051Z               "path": "crates/spt-proto/src/id.rs",
2026-07-26T22:33:02.9776151Z               "line": 17
2026-07-26T22:33:02.9776247Z             },
2026-07-26T22:33:02.9776328Z             {
2026-07-26T22:33:02.9776451Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:02.9776547Z               "line": 211
2026-07-26T22:33:02.9776634Z             },
2026-07-26T22:33:02.9776718Z             {
2026-07-26T22:33:02.9776841Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9776936Z               "line": 646
2026-07-26T22:33:02.9777017Z             },
2026-07-26T22:33:02.9777096Z             {
2026-07-26T22:33:02.9777211Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9777311Z               "line": 821
2026-07-26T22:33:02.9777392Z             },
2026-07-26T22:33:02.9777482Z             {
2026-07-26T22:33:02.9777593Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:02.9777698Z               "line": 53
2026-07-26T22:33:02.9777778Z             },
2026-07-26T22:33:02.9777870Z             {
2026-07-26T22:33:02.9777974Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:02.9778073Z               "line": 68
2026-07-26T22:33:02.9778169Z             },
2026-07-26T22:33:02.9778256Z             {
2026-07-26T22:33:02.9778365Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9778465Z               "line": 2054
2026-07-26T22:33:02.9778547Z             },
2026-07-26T22:33:02.9778636Z             {
2026-07-26T22:33:02.9778741Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9778838Z               "line": 11943
2026-07-26T22:33:02.9778923Z             },
2026-07-26T22:33:02.9779095Z             {
2026-07-26T22:33:02.9779205Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9779298Z               "line": 12244
2026-07-26T22:33:02.9779384Z             }
2026-07-26T22:33:02.9779461Z           ]
2026-07-26T22:33:02.9779551Z         },
2026-07-26T22:33:02.9779634Z         "int": {
2026-07-26T22:33:02.9779738Z           "complete": false,
2026-07-26T22:33:02.9779830Z           "evidence": []
2026-07-26T22:33:02.9780016Z         },
2026-07-26T22:33:02.9780111Z         "unit": {
2026-07-26T22:33:02.9780207Z           "complete": true,
2026-07-26T22:33:02.9780292Z           "evidence": [
2026-07-26T22:33:02.9780387Z             {
2026-07-26T22:33:02.9780498Z               "path": "crates/spt-proto/src/id.rs",
2026-07-26T22:33:02.9780584Z               "line": 94
2026-07-26T22:33:02.9780669Z             },
2026-07-26T22:33:02.9780756Z             {
2026-07-26T22:33:02.9780864Z               "path": "crates/spt-proto/src/id.rs",
2026-07-26T22:33:02.9780950Z               "line": 111
2026-07-26T22:33:02.9781031Z             },
2026-07-26T22:33:02.9781114Z             {
2026-07-26T22:33:02.9781228Z               "path": "crates/spt-proto/src/id.rs",
2026-07-26T22:33:02.9781318Z               "line": 124
2026-07-26T22:33:02.9781503Z             },
2026-07-26T22:33:02.9781589Z             {
2026-07-26T22:33:02.9781695Z               "path": "crates/spt-proto/src/id.rs",
2026-07-26T22:33:02.9781809Z               "line": 134
2026-07-26T22:33:02.9781890Z             },
2026-07-26T22:33:02.9781971Z             {
2026-07-26T22:33:02.9782073Z               "path": "crates/spt-proto/src/id.rs",
2026-07-26T22:33:02.9782175Z               "line": 144
2026-07-26T22:33:02.9782256Z             },
2026-07-26T22:33:02.9782346Z             {
2026-07-26T22:33:02.9782453Z               "path": "crates/spt-proto/src/id.rs",
2026-07-26T22:33:02.9782547Z               "line": 156
2026-07-26T22:33:02.9782628Z             },
2026-07-26T22:33:02.9782710Z             {
2026-07-26T22:33:02.9782842Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:02.9782937Z               "line": 796
2026-07-26T22:33:02.9783020Z             },
2026-07-26T22:33:02.9783115Z             {
2026-07-26T22:33:02.9783233Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:02.9783320Z               "line": 458
2026-07-26T22:33:02.9783405Z             }
2026-07-26T22:33:02.9783491Z           ]
2026-07-26T22:33:02.9783591Z         }
2026-07-26T22:33:02.9783678Z       }
2026-07-26T22:33:02.9783758Z     },
2026-07-26T22:33:02.9783844Z     {
2026-07-26T22:33:02.9783969Z       "id": "REQ-HAZARD-IDLE-SILENT-NONDELIVERY",
2026-07-26T22:33:02.9793880Z       "title": "An idle delivery to a session whose translation binary is in a FAILED STATE — absent (none declared), spawn-failed, FAULTED, or its inject-worker channel gone — must SPOOL (delivered=false), never raw-inject a pseudo-delivery reported as delivered. The GUARANTEE is the STEADY STATE (the failed-binary state), not every in-flight message (see the fault-transient carve-out below). ROOT (F-019 post-mortem, ADR-0022 amendment): the v0.11.0 path raw-injected `payload+\\r` into the PTY whenever no working translation binary handled an inbound message (none declared, spawn-failed, FAULTED, or its inject-worker channel gone) AND acked `delivered=true` — but a bare `payload+\\r` does NOT submit on a modern TUI (Claude Code), so the message was TYPED but never sent: a silent pseudo-delivery reported as success. That silent degrade-to-raw-inject is exactly what MASKED F-019 through a multi-hour black-box hunt. FIX (operator-ruled, doyle-scoped): idle delivery is translation-binary-ONLY — `dispatch_endpoint_input` with no working binary replies `endpoint_injected_envelope(ep, delivered=false)` (the caller `try_broker_inject`→`cmd_send` then falls through to `deliver::send` = SPOOL, poll-fed, never lost) and writes NOTHING to the PTY, LOUDLY (eprintln names the absent/faulted/worker-gone cause). A failed binary becomes a VISIBLE no-delivery (spooled + honest QUEUED report), never a confident-but-false 'Sent'. The raw-inject fallback (`input.enqueue`) is REMOVED from the no-binary, worker-dropped, AND post-fault paths. OUT OF SCOPE (doyle ruling, follow-up note only): broker-side auto-redrive of already-spooled inbound the instant a live-update binary spawns (ordering/exactly-once hazards; the poll substrate + subsequent sends cover re-delivery). NOT COVERED — the FAULT-TRANSIENT (the STATE-vs-transient precision): a delivery landing in the worker's commit window — BEFORE `event_rx` is dropped / `faulted` is set — can be optimistically enqueue-acked (`delivered=true` the instant `event_tx.send` succeeds) then DROPPED when the worker faults+returns. That is a SEPARATE, PRE-EXISTING hazard: raw-inject removal did not touch it (the old code dropped that queued event too) — v0.14.3 is a strict improvement that makes nothing worse. It is tracked for v0.15.0 under REQ-MSG-DELIVERY-AXES (the spool-centric delivery redesign: ack-on-SPOOL replaces ack-on-enqueue, which closes the optimistic-ack drop naturally). v0.14.3 guarantees only the steady FAILED state → spool (faulted is MONOTONIC — set once, never respawns — so it converges deterministically; the g2 gate asserts the steady state via bounded-retry-until-spool, not a single-shot ack). EPHEMERAL CARVE-OUT (v0.15.0 W3, ADR-0028): `--ephemeral` is the SOLE sender-opted-in exception — an ephemeral message MAY drop silently if it cannot deliver in its accepted window (at window-open with no live carrier, or at TTL). Every NON-ephemeral path still spools + reports `delivered=false` (the guarantee is unchanged for the default durable path). v0.15.0 realizes the ephemeral drop for the spt-hosted-binary no-carrier-at-window leg + TTL; the harness-relay no-live-listener leg is a documented partial (CONTEXT.md §persistence). KNOWN-HAZARDS class (rule 4). (v0.14.3; ephemeral carve-out v0.15.0)",
2026-07-26T22:33:02.9794247Z       "requiredStages": [
2026-07-26T22:33:02.9794328Z         "doc",
2026-07-26T22:33:02.9794423Z         "impl",
2026-07-26T22:33:02.9794510Z         "unit",
2026-07-26T22:33:02.9794600Z         "int"
2026-07-26T22:33:02.9794680Z       ],
2026-07-26T22:33:02.9794771Z       "stages": {
2026-07-26T22:33:02.9794849Z         "doc": {
2026-07-26T22:33:02.9794961Z           "complete": true,
2026-07-26T22:33:02.9795046Z           "evidence": [
2026-07-26T22:33:02.9795137Z             {
2026-07-26T22:33:02.9795255Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9795354Z               "line": 518
2026-07-26T22:33:02.9795440Z             }
2026-07-26T22:33:02.9795516Z           ]
2026-07-26T22:33:02.9795603Z         },
2026-07-26T22:33:02.9795683Z         "impl": {
2026-07-26T22:33:02.9795783Z           "complete": true,
2026-07-26T22:33:02.9795875Z           "evidence": [
2026-07-26T22:33:02.9795960Z             {
2026-07-26T22:33:02.9796089Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9796185Z               "line": 5211
2026-07-26T22:33:02.9796256Z             }
2026-07-26T22:33:02.9796341Z           ]
2026-07-26T22:33:02.9796418Z         },
2026-07-26T22:33:02.9796513Z         "int": {
2026-07-26T22:33:02.9796608Z           "complete": true,
2026-07-26T22:33:02.9796704Z           "evidence": [
2026-07-26T22:33:02.9796795Z             {
2026-07-26T22:33:02.9796918Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-07-26T22:33:02.9797003Z               "line": 198
2026-07-26T22:33:02.9797101Z             },
2026-07-26T22:33:02.9797185Z             {
2026-07-26T22:33:02.9797314Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-07-26T22:33:02.9797406Z               "line": 545
2026-07-26T22:33:02.9797491Z             },
2026-07-26T22:33:02.9797576Z             {
2026-07-26T22:33:02.9797730Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:02.9797824Z               "line": 480
2026-07-26T22:33:02.9797918Z             },
2026-07-26T22:33:02.9798004Z             {
2026-07-26T22:33:02.9798160Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:02.9798254Z               "line": 1493
2026-07-26T22:33:02.9798379Z             }
2026-07-26T22:33:02.9798508Z           ]
2026-07-26T22:33:02.9798631Z         },
2026-07-26T22:33:02.9798761Z         "unit": {
2026-07-26T22:33:02.9798907Z           "complete": true,
2026-07-26T22:33:02.9799104Z           "evidence": [
2026-07-26T22:33:02.9799546Z             {
2026-07-26T22:33:02.9799681Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.9799780Z               "line": 1664
2026-07-26T22:33:02.9799866Z             }
2026-07-26T22:33:02.9799954Z           ]
2026-07-26T22:33:02.9800030Z         }
2026-07-26T22:33:02.9800114Z       }
2026-07-26T22:33:02.9800195Z     },
2026-07-26T22:33:02.9800278Z     {
2026-07-26T22:33:02.9800391Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-07-26T22:33:02.9800528Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-07-26T22:33:02.9800623Z       "requiredStages": [
2026-07-26T22:33:02.9800704Z         "impl",
2026-07-26T22:33:02.9800793Z         "unit"
2026-07-26T22:33:02.9800868Z       ],
2026-07-26T22:33:02.9800965Z       "stages": {
2026-07-26T22:33:02.9801047Z         "doc": {
2026-07-26T22:33:02.9801256Z           "complete": false,
2026-07-26T22:33:02.9801351Z           "evidence": []
2026-07-26T22:33:02.9801436Z         },
2026-07-26T22:33:02.9801517Z         "impl": {
2026-07-26T22:33:02.9801623Z           "complete": true,
2026-07-26T22:33:02.9801714Z           "evidence": [
2026-07-26T22:33:02.9801798Z             {
2026-07-26T22:33:02.9801929Z               "path": "crates/spt-msg/src/deliver.rs",
2026-07-26T22:33:02.9802018Z               "line": 128
2026-07-26T22:33:02.9802104Z             }
2026-07-26T22:33:02.9802181Z           ]
2026-07-26T22:33:02.9802262Z         },
2026-07-26T22:33:02.9802353Z         "int": {
2026-07-26T22:33:02.9802448Z           "complete": false,
2026-07-26T22:33:02.9802544Z           "evidence": []
2026-07-26T22:33:02.9802629Z         },
2026-07-26T22:33:02.9802719Z         "unit": {
2026-07-26T22:33:02.9802811Z           "complete": true,
2026-07-26T22:33:02.9802906Z           "evidence": [
2026-07-26T22:33:02.9802981Z             {
2026-07-26T22:33:02.9803106Z               "path": "crates/spt-msg/src/deliver.rs",
2026-07-26T22:33:02.9803202Z               "line": 248
2026-07-26T22:33:02.9803291Z             }
2026-07-26T22:33:02.9803367Z           ]
2026-07-26T22:33:02.9803448Z         }
2026-07-26T22:33:02.9803529Z       }
2026-07-26T22:33:02.9803610Z     },
2026-07-26T22:33:02.9803695Z     {
2026-07-26T22:33:02.9803820Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-07-26T22:33:02.9803972Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-07-26T22:33:02.9804072Z       "requiredStages": [
2026-07-26T22:33:02.9804155Z         "impl",
2026-07-26T22:33:02.9804245Z         "unit"
2026-07-26T22:33:02.9804325Z       ],
2026-07-26T22:33:02.9804411Z       "stages": {
2026-07-26T22:33:02.9804493Z         "doc": {
2026-07-26T22:33:02.9804592Z           "complete": false,
2026-07-26T22:33:02.9804683Z           "evidence": []
2026-07-26T22:33:02.9804765Z         },
2026-07-26T22:33:02.9804850Z         "impl": {
2026-07-26T22:33:02.9804949Z           "complete": true,
2026-07-26T22:33:02.9805046Z           "evidence": [
2026-07-26T22:33:02.9805132Z             {
2026-07-26T22:33:02.9805250Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9805355Z               "line": 631
2026-07-26T22:33:02.9805442Z             },
2026-07-26T22:33:02.9805531Z             {
2026-07-26T22:33:02.9805635Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9805731Z               "line": 666
2026-07-26T22:33:02.9805815Z             },
2026-07-26T22:33:02.9805895Z             {
2026-07-26T22:33:02.9806005Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9806106Z               "line": 684
2026-07-26T22:33:02.9806181Z             }
2026-07-26T22:33:02.9806262Z           ]
2026-07-26T22:33:02.9806343Z         },
2026-07-26T22:33:02.9806420Z         "int": {
2026-07-26T22:33:02.9806525Z           "complete": false,
2026-07-26T22:33:02.9806614Z           "evidence": []
2026-07-26T22:33:02.9806707Z         },
2026-07-26T22:33:02.9806792Z         "unit": {
2026-07-26T22:33:02.9806896Z           "complete": true,
2026-07-26T22:33:02.9806978Z           "evidence": [
2026-07-26T22:33:02.9807149Z             {
2026-07-26T22:33:02.9807259Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9807355Z               "line": 709
2026-07-26T22:33:02.9807431Z             },
2026-07-26T22:33:02.9807512Z             {
2026-07-26T22:33:02.9807627Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9807722Z               "line": 730
2026-07-26T22:33:02.9807802Z             },
2026-07-26T22:33:02.9807888Z             {
2026-07-26T22:33:02.9807990Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9808083Z               "line": 1389
2026-07-26T22:33:02.9808160Z             },
2026-07-26T22:33:02.9808256Z             {
2026-07-26T22:33:02.9808370Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9808469Z               "line": 1400
2026-07-26T22:33:02.9808631Z             },
2026-07-26T22:33:02.9808725Z             {
2026-07-26T22:33:02.9808833Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9809035Z               "line": 1413
2026-07-26T22:33:02.9809120Z             }
2026-07-26T22:33:02.9809206Z           ]
2026-07-26T22:33:02.9809292Z         }
2026-07-26T22:33:02.9809383Z       }
2026-07-26T22:33:02.9809463Z     },
2026-07-26T22:33:02.9809550Z     {
2026-07-26T22:33:02.9809664Z       "id": "REQ-HAZARD-INFO-RMW-LOST-UPDATE",
2026-07-26T22:33:02.9810083Z       "title": "Concurrent info.json writers must serialize under the per-perch lock (5.16): an unlocked whole-record write racing a locked RMW is a silent lost update",
2026-07-26T22:33:02.9810179Z       "requiredStages": [
2026-07-26T22:33:02.9810279Z         "impl",
2026-07-26T22:33:02.9810374Z         "unit"
2026-07-26T22:33:02.9810489Z       ],
2026-07-26T22:33:02.9810570Z       "stages": {
2026-07-26T22:33:02.9810655Z         "doc": {
2026-07-26T22:33:02.9810741Z           "complete": true,
2026-07-26T22:33:02.9810838Z           "evidence": [
2026-07-26T22:33:02.9810928Z             {
2026-07-26T22:33:02.9811040Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9811141Z               "line": 285
2026-07-26T22:33:02.9811222Z             }
2026-07-26T22:33:02.9811315Z           ]
2026-07-26T22:33:02.9811400Z         },
2026-07-26T22:33:02.9811487Z         "impl": {
2026-07-26T22:33:02.9811578Z           "complete": true,
2026-07-26T22:33:02.9811672Z           "evidence": [
2026-07-26T22:33:02.9811763Z             {
2026-07-26T22:33:02.9811883Z               "path": "crates/spt-store/src/home.rs",
2026-07-26T22:33:02.9811968Z               "line": 268
2026-07-26T22:33:02.9812054Z             },
2026-07-26T22:33:02.9812126Z             {
2026-07-26T22:33:02.9812240Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9812320Z               "line": 327
2026-07-26T22:33:02.9812412Z             },
2026-07-26T22:33:02.9812489Z             {
2026-07-26T22:33:02.9812622Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9812703Z               "line": 633
2026-07-26T22:33:02.9812804Z             },
2026-07-26T22:33:02.9812888Z             {
2026-07-26T22:33:02.9812998Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9813080Z               "line": 647
2026-07-26T22:33:02.9813170Z             },
2026-07-26T22:33:02.9813251Z             {
2026-07-26T22:33:02.9813376Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:02.9813462Z               "line": 70
2026-07-26T22:33:02.9813546Z             }
2026-07-26T22:33:02.9813627Z           ]
2026-07-26T22:33:02.9813715Z         },
2026-07-26T22:33:02.9813823Z         "int": {
2026-07-26T22:33:02.9813969Z           "complete": false,
2026-07-26T22:33:02.9814085Z           "evidence": []
2026-07-26T22:33:02.9814203Z         },
2026-07-26T22:33:02.9814332Z         "unit": {
2026-07-26T22:33:02.9814537Z           "complete": true,
2026-07-26T22:33:02.9814681Z           "evidence": [
2026-07-26T22:33:02.9814899Z             {
2026-07-26T22:33:02.9815076Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9815329Z               "line": 1450
2026-07-26T22:33:02.9815415Z             }
2026-07-26T22:33:02.9815500Z           ]
2026-07-26T22:33:02.9815577Z         }
2026-07-26T22:33:02.9815668Z       }
2026-07-26T22:33:02.9815743Z     },
2026-07-26T22:33:02.9815834Z     {
2026-07-26T22:33:02.9815949Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-07-26T22:33:02.9823796Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-07-26T22:33:02.9824064Z       "requiredStages": [
2026-07-26T22:33:02.9824164Z         "impl",
2026-07-26T22:33:02.9824246Z         "unit",
2026-07-26T22:33:02.9824337Z         "int"
2026-07-26T22:33:02.9824435Z       ],
2026-07-26T22:33:02.9824515Z       "stages": {
2026-07-26T22:33:02.9824597Z         "doc": {
2026-07-26T22:33:02.9824693Z           "complete": false,
2026-07-26T22:33:02.9824787Z           "evidence": []
2026-07-26T22:33:02.9824873Z         },
2026-07-26T22:33:02.9824955Z         "impl": {
2026-07-26T22:33:02.9825051Z           "complete": true,
2026-07-26T22:33:02.9825144Z           "evidence": [
2026-07-26T22:33:02.9825232Z             {
2026-07-26T22:33:02.9825350Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9825445Z               "line": 1220
2026-07-26T22:33:02.9825522Z             },
2026-07-26T22:33:02.9825613Z             {
2026-07-26T22:33:02.9825736Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9825822Z               "line": 2536
2026-07-26T22:33:02.9825899Z             },
2026-07-26T22:33:02.9825980Z             {
2026-07-26T22:33:02.9826098Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9826308Z               "line": 3261
2026-07-26T22:33:02.9826385Z             },
2026-07-26T22:33:02.9830230Z             {
2026-07-26T22:33:02.9830417Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9830512Z               "line": 3325
2026-07-26T22:33:02.9830607Z             }
2026-07-26T22:33:02.9830685Z           ]
2026-07-26T22:33:02.9830775Z         },
2026-07-26T22:33:02.9830869Z         "int": {
2026-07-26T22:33:02.9830975Z           "complete": true,
2026-07-26T22:33:02.9831070Z           "evidence": [
2026-07-26T22:33:02.9831165Z             {
2026-07-26T22:33:02.9831324Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:02.9831423Z               "line": 353
2026-07-26T22:33:02.9831508Z             }
2026-07-26T22:33:02.9831595Z           ]
2026-07-26T22:33:02.9831667Z         },
2026-07-26T22:33:02.9831915Z         "unit": {
2026-07-26T22:33:02.9832010Z           "complete": true,
2026-07-26T22:33:02.9832104Z           "evidence": [
2026-07-26T22:33:02.9832203Z             {
2026-07-26T22:33:02.9832327Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9832412Z               "line": 6824
2026-07-26T22:33:02.9832492Z             }
2026-07-26T22:33:02.9832573Z           ]
2026-07-26T22:33:02.9832655Z         }
2026-07-26T22:33:02.9832741Z       }
2026-07-26T22:33:02.9832816Z     },
2026-07-26T22:33:02.9832897Z     {
2026-07-26T22:33:02.9833017Z       "id": "REQ-HAZARD-INJECT-SETTLE-REARM",
2026-07-26T22:33:02.9837070Z       "title": "post-0.29.0 (KNOWN-HAZARDS 7.37): the Layer-1 settle-gate must RE-ARM before every delivery on an OBSERVABLE (echoing/interactive) PTY — a mid-session reader reattach re-creates the head-swallow window. ROOT (field-confirmed on 0.29.0, doyle diagnosis + perri screenshot): the shipped W5-A settle-gate (REQ-INJECT-MULTILINE-INTEGRITY) gated Layer 1 behind a worker-local ONE-SHOT (`settled_once`) on the false premise that the head-swallow race is STARTUP-only (reader not attached after spawn). A mid-session `/clear` re-enters the harness's raw-mode input reader, re-creating the pre-settle window — but the one-shot already fired at spawn, so `settle_before_inject` is SKIPPED and the head is eaten again (a checkpoint-wake payload injected right after `/clear` lost its head, mid-path `spt/Cargo.toml)`); echo-verify (Layer 2) is default-OFF for that session, so it is silent + unrecoverable. FIX (doyle ruling): re-settle before EVERY delivery on an observable PTY; latch-skip the steady-state settle ONLY where the probe is UNOBSERVABLE (non-echoing ConPTY — no reader-reattach race to guard, and each settle burns the full deadline). The settle's own bool return (observed vs timed-out) discriminates the class; a re-drive (attempt>1) ALWAYS settles. `settled_once: bool` one-shot → `probe_unobservable: bool` latch driven by the first-attempt settle outcome.",
2026-07-26T22:33:02.9837212Z       "requiredStages": [
2026-07-26T22:33:02.9837302Z         "doc",
2026-07-26T22:33:02.9837383Z         "impl",
2026-07-26T22:33:02.9837482Z         "unit"
2026-07-26T22:33:02.9837561Z       ],
2026-07-26T22:33:02.9837652Z       "stages": {
2026-07-26T22:33:02.9837733Z         "doc": {
2026-07-26T22:33:02.9837835Z           "complete": true,
2026-07-26T22:33:02.9837923Z           "evidence": [
2026-07-26T22:33:02.9838024Z             {
2026-07-26T22:33:02.9838124Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9838228Z               "line": 640
2026-07-26T22:33:02.9838305Z             }
2026-07-26T22:33:02.9838392Z           ]
2026-07-26T22:33:02.9838482Z         },
2026-07-26T22:33:02.9838567Z         "impl": {
2026-07-26T22:33:02.9838668Z           "complete": true,
2026-07-26T22:33:02.9838759Z           "evidence": [
2026-07-26T22:33:02.9838849Z             {
2026-07-26T22:33:02.9839092Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9839192Z               "line": 3171
2026-07-26T22:33:02.9839268Z             }
2026-07-26T22:33:02.9839360Z           ]
2026-07-26T22:33:02.9839549Z         },
2026-07-26T22:33:02.9839632Z         "int": {
2026-07-26T22:33:02.9839727Z           "complete": false,
2026-07-26T22:33:02.9839826Z           "evidence": []
2026-07-26T22:33:02.9839913Z         },
2026-07-26T22:33:02.9840004Z         "unit": {
2026-07-26T22:33:02.9840097Z           "complete": true,
2026-07-26T22:33:02.9840197Z           "evidence": [
2026-07-26T22:33:02.9840273Z             {
2026-07-26T22:33:02.9840400Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9840495Z               "line": 7801
2026-07-26T22:33:02.9840577Z             }
2026-07-26T22:33:02.9840653Z           ]
2026-07-26T22:33:02.9840743Z         }
2026-07-26T22:33:02.9840829Z       }
2026-07-26T22:33:02.9840915Z     },
2026-07-26T22:33:02.9840996Z     {
2026-07-26T22:33:02.9841115Z       "id": "REQ-HAZARD-INJECT-WORKER-POISON",
2026-07-26T22:33:02.9844574Z       "title": "The per-session inject-worker floor Mutex is SHARED by the inject worker (open/flush) and the controller-input path (dispatch_input Layer C buffer_if_held); a panic under the lock on EITHER poisons it, and a bare .lock().unwrap() at the next site then panics too — a panic in the inject WORKER kills its thread WITHOUT reaping the translation child, orphaning a live binary while event_tx.send fails, so force-native reports 'worker-gone' delivered=false FOREVER (the F-e generic-miss shape). HARDENING, NOT the F-e incident root (perri's matrix exonerated poison under thrash/dormancy/churn): (i) poison-tolerant floor lock (unwrap_or_else into_inner) at all 3 sites so one panic can't cascade the session's delivery dead; (ii) a panic-resilient inject worker (catch_unwind -> fault+terminate the child on a worker panic) so a dead worker never orphans a live binary + strands delivery. Poison-tolerance class of REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE / bug #16.",
2026-07-26T22:33:02.9844707Z       "requiredStages": [
2026-07-26T22:33:02.9844798Z         "impl",
2026-07-26T22:33:02.9844883Z         "unit"
2026-07-26T22:33:02.9844974Z       ],
2026-07-26T22:33:02.9845061Z       "stages": {
2026-07-26T22:33:02.9845156Z         "doc": {
2026-07-26T22:33:02.9845250Z           "complete": false,
2026-07-26T22:33:02.9845347Z           "evidence": []
2026-07-26T22:33:02.9845424Z         },
2026-07-26T22:33:02.9845513Z         "impl": {
2026-07-26T22:33:02.9845612Z           "complete": true,
2026-07-26T22:33:02.9845707Z           "evidence": [
2026-07-26T22:33:02.9845789Z             {
2026-07-26T22:33:02.9845912Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9846003Z               "line": 2920
2026-07-26T22:33:02.9846099Z             },
2026-07-26T22:33:02.9846185Z             {
2026-07-26T22:33:02.9846303Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9846385Z               "line": 3104
2026-07-26T22:33:02.9846480Z             }
2026-07-26T22:33:02.9846561Z           ]
2026-07-26T22:33:02.9846642Z         },
2026-07-26T22:33:02.9846719Z         "int": {
2026-07-26T22:33:02.9846833Z           "complete": false,
2026-07-26T22:33:02.9846918Z           "evidence": []
2026-07-26T22:33:02.9847001Z         },
2026-07-26T22:33:02.9847077Z         "unit": {
2026-07-26T22:33:02.9847176Z           "complete": true,
2026-07-26T22:33:02.9847257Z           "evidence": [
2026-07-26T22:33:02.9847339Z             {
2026-07-26T22:33:02.9847452Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9847552Z               "line": 6981
2026-07-26T22:33:02.9847640Z             },
2026-07-26T22:33:02.9847725Z             {
2026-07-26T22:33:02.9847838Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9847933Z               "line": 7877
2026-07-26T22:33:02.9848019Z             }
2026-07-26T22:33:02.9848098Z           ]
2026-07-26T22:33:02.9848179Z         }
2026-07-26T22:33:02.9848260Z       }
2026-07-26T22:33:02.9848346Z     },
2026-07-26T22:33:02.9848427Z     {
2026-07-26T22:33:02.9848560Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-07-26T22:33:02.9856301Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-07-26T22:33:02.9856582Z       "requiredStages": [
2026-07-26T22:33:02.9856674Z         "doc",
2026-07-26T22:33:02.9856763Z         "impl",
2026-07-26T22:33:02.9856848Z         "unit",
2026-07-26T22:33:02.9856927Z         "int"
2026-07-26T22:33:02.9857012Z       ],
2026-07-26T22:33:02.9857092Z       "stages": {
2026-07-26T22:33:02.9857178Z         "doc": {
2026-07-26T22:33:02.9857260Z           "complete": true,
2026-07-26T22:33:02.9857364Z           "evidence": [
2026-07-26T22:33:02.9857450Z             {
2026-07-26T22:33:02.9857566Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9857669Z               "line": 491
2026-07-26T22:33:02.9857755Z             }
2026-07-26T22:33:02.9857837Z           ]
2026-07-26T22:33:02.9857918Z         },
2026-07-26T22:33:02.9857998Z         "impl": {
2026-07-26T22:33:02.9858098Z           "complete": true,
2026-07-26T22:33:02.9858185Z           "evidence": [
2026-07-26T22:33:02.9858275Z             {
2026-07-26T22:33:02.9858407Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:02.9858498Z               "line": 483
2026-07-26T22:33:02.9858588Z             },
2026-07-26T22:33:02.9858672Z             {
2026-07-26T22:33:02.9858791Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.9858877Z               "line": 635
2026-07-26T22:33:02.9859048Z             },
2026-07-26T22:33:02.9859134Z             {
2026-07-26T22:33:02.9859254Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9859340Z               "line": 5028
2026-07-26T22:33:02.9859425Z             },
2026-07-26T22:33:02.9859612Z             {
2026-07-26T22:33:02.9859735Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.9859831Z               "line": 530
2026-07-26T22:33:02.9859916Z             }
2026-07-26T22:33:02.9859993Z           ]
2026-07-26T22:33:02.9860083Z         },
2026-07-26T22:33:02.9860160Z         "int": {
2026-07-26T22:33:02.9860250Z           "complete": true,
2026-07-26T22:33:02.9860340Z           "evidence": [
2026-07-26T22:33:02.9860428Z             {
2026-07-26T22:33:02.9860546Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-07-26T22:33:02.9860651Z               "line": 777
2026-07-26T22:33:02.9860728Z             },
2026-07-26T22:33:02.9860809Z             {
2026-07-26T22:33:02.9860927Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-07-26T22:33:02.9861028Z               "line": 894
2026-07-26T22:33:02.9861223Z             },
2026-07-26T22:33:02.9861317Z             {
2026-07-26T22:33:02.9861479Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-07-26T22:33:02.9861572Z               "line": 269
2026-07-26T22:33:02.9861649Z             }
2026-07-26T22:33:02.9861744Z           ]
2026-07-26T22:33:02.9861821Z         },
2026-07-26T22:33:02.9861920Z         "unit": {
2026-07-26T22:33:02.9862011Z           "complete": true,
2026-07-26T22:33:02.9862107Z           "evidence": [
2026-07-26T22:33:02.9862193Z             {
2026-07-26T22:33:02.9862316Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.9862398Z               "line": 1704
2026-07-26T22:33:02.9862489Z             },
2026-07-26T22:33:02.9862564Z             {
2026-07-26T22:33:02.9862684Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:02.9862774Z               "line": 1738
2026-07-26T22:33:02.9862855Z             }
2026-07-26T22:33:02.9862950Z           ]
2026-07-26T22:33:02.9863071Z         }
2026-07-26T22:33:02.9863170Z       }
2026-07-26T22:33:02.9863251Z     },
2026-07-26T22:33:02.9863338Z     {
2026-07-26T22:33:02.9863455Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-07-26T22:33:02.9864032Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-07-26T22:33:02.9864130Z       "requiredStages": [
2026-07-26T22:33:02.9864215Z         "impl",
2026-07-26T22:33:02.9864311Z         "unit"
2026-07-26T22:33:02.9864398Z       ],
2026-07-26T22:33:02.9864482Z       "stages": {
2026-07-26T22:33:02.9864573Z         "doc": {
2026-07-26T22:33:02.9864669Z           "complete": false,
2026-07-26T22:33:02.9864768Z           "evidence": []
2026-07-26T22:33:02.9864845Z         },
2026-07-26T22:33:02.9864932Z         "impl": {
2026-07-26T22:33:02.9865017Z           "complete": true,
2026-07-26T22:33:02.9865111Z           "evidence": [
2026-07-26T22:33:02.9865193Z             {
2026-07-26T22:33:02.9865322Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:02.9865412Z               "line": 1211
2026-07-26T22:33:02.9865498Z             }
2026-07-26T22:33:02.9865576Z           ]
2026-07-26T22:33:02.9865660Z         },
2026-07-26T22:33:02.9865737Z         "int": {
2026-07-26T22:33:02.9865837Z           "complete": false,
2026-07-26T22:33:02.9865933Z           "evidence": []
2026-07-26T22:33:02.9866013Z         },
2026-07-26T22:33:02.9866089Z         "unit": {
2026-07-26T22:33:02.9866191Z           "complete": true,
2026-07-26T22:33:02.9866271Z           "evidence": [
2026-07-26T22:33:02.9866351Z             {
2026-07-26T22:33:02.9866472Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:02.9866563Z               "line": 1325
2026-07-26T22:33:02.9866642Z             }
2026-07-26T22:33:02.9866718Z           ]
2026-07-26T22:33:02.9866804Z         }
2026-07-26T22:33:02.9866890Z       }
2026-07-26T22:33:02.9866971Z     },
2026-07-26T22:33:02.9867056Z     {
2026-07-26T22:33:02.9867166Z       "id": "REQ-HAZARD-LISTEN-ORPHAN",
2026-07-26T22:33:02.9869332Z       "title": "W4 (LIFECYCLE-TRUTH, KNOWN-HAZARDS): `api listen --parent-pid N` watches parent liveness and exits loud on parent death. ROOT (mobile-gw RCA): --parent-pid is auth-anchor ONLY — no liveness watch; host death orphans the listener forever -> perch held alive (false ONLINE), EVENTs stream to a dead stdout, dead-owner rebind BLOCKED (recorded pid = the live orphan). FIX: listener watches --parent-pid liveness (Windows: job object or poll; Unix: PDEATHSIG or poll) and exits loud on parent death. flynn's job-object guard (spt-mobile side) stays regardless; filed SPT-CORE-NEEDS §5. Unit: parent-death -> listener exits within one poll window.",
2026-07-26T22:33:02.9869472Z       "requiredStages": [
2026-07-26T22:33:02.9869552Z         "impl",
2026-07-26T22:33:02.9869637Z         "unit"
2026-07-26T22:33:02.9869714Z       ],
2026-07-26T22:33:02.9869909Z       "stages": {
2026-07-26T22:33:02.9869995Z         "doc": {
2026-07-26T22:33:02.9870096Z           "complete": false,
2026-07-26T22:33:02.9870195Z           "evidence": []
2026-07-26T22:33:02.9870280Z         },
2026-07-26T22:33:02.9870363Z         "impl": {
2026-07-26T22:33:02.9870468Z           "complete": true,
2026-07-26T22:33:02.9870553Z           "evidence": [
2026-07-26T22:33:02.9870629Z             {
2026-07-26T22:33:02.9870754Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9870849Z               "line": 589
2026-07-26T22:33:02.9870934Z             },
2026-07-26T22:33:02.9871021Z             {
2026-07-26T22:33:02.9871134Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9871220Z               "line": 596
2026-07-26T22:33:02.9871298Z             },
2026-07-26T22:33:02.9871384Z             {
2026-07-26T22:33:02.9871492Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9871579Z               "line": 613
2026-07-26T22:33:02.9871675Z             },
2026-07-26T22:33:02.9871759Z             {
2026-07-26T22:33:02.9871877Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9871968Z               "line": 794
2026-07-26T22:33:02.9872053Z             }
2026-07-26T22:33:02.9872133Z           ]
2026-07-26T22:33:02.9872213Z         },
2026-07-26T22:33:02.9872285Z         "int": {
2026-07-26T22:33:02.9872381Z           "complete": false,
2026-07-26T22:33:02.9872466Z           "evidence": []
2026-07-26T22:33:02.9872556Z         },
2026-07-26T22:33:02.9872639Z         "unit": {
2026-07-26T22:33:02.9872744Z           "complete": true,
2026-07-26T22:33:02.9872828Z           "evidence": [
2026-07-26T22:33:02.9872915Z             {
2026-07-26T22:33:02.9873024Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9873115Z               "line": 1334
2026-07-26T22:33:02.9873196Z             },
2026-07-26T22:33:02.9873292Z             {
2026-07-26T22:33:02.9873397Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:02.9873497Z               "line": 1378
2026-07-26T22:33:02.9873574Z             }
2026-07-26T22:33:02.9873701Z           ]
2026-07-26T22:33:02.9873826Z         }
2026-07-26T22:33:02.9873917Z       }
2026-07-26T22:33:02.9873992Z     },
2026-07-26T22:33:02.9874073Z     {
2026-07-26T22:33:02.9874213Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-07-26T22:33:02.9876573Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-07-26T22:33:02.9876789Z       "requiredStages": [
2026-07-26T22:33:02.9876864Z         "impl",
2026-07-26T22:33:02.9876950Z         "unit",
2026-07-26T22:33:02.9877032Z         "int"
2026-07-26T22:33:02.9877128Z       ],
2026-07-26T22:33:02.9877207Z       "stages": {
2026-07-26T22:33:02.9877297Z         "doc": {
2026-07-26T22:33:02.9877383Z           "complete": false,
2026-07-26T22:33:02.9877479Z           "evidence": []
2026-07-26T22:33:02.9877554Z         },
2026-07-26T22:33:02.9877635Z         "impl": {
2026-07-26T22:33:02.9877726Z           "complete": true,
2026-07-26T22:33:02.9877827Z           "evidence": [
2026-07-26T22:33:02.9877912Z             {
2026-07-26T22:33:02.9878042Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.9878208Z               "line": 1204
2026-07-26T22:33:02.9878293Z             }
2026-07-26T22:33:02.9878381Z           ]
2026-07-26T22:33:02.9878466Z         },
2026-07-26T22:33:02.9878555Z         "int": {
2026-07-26T22:33:02.9878642Z           "complete": true,
2026-07-26T22:33:02.9878724Z           "evidence": [
2026-07-26T22:33:02.9878809Z             {
2026-07-26T22:33:02.9879034Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-07-26T22:33:02.9879132Z               "line": 24
2026-07-26T22:33:02.9879209Z             }
2026-07-26T22:33:02.9879296Z           ]
2026-07-26T22:33:02.9879381Z         },
2026-07-26T22:33:02.9879476Z         "unit": {
2026-07-26T22:33:02.9879566Z           "complete": true,
2026-07-26T22:33:02.9879661Z           "evidence": [
2026-07-26T22:33:02.9879741Z             {
2026-07-26T22:33:02.9879868Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.9879954Z               "line": 1636
2026-07-26T22:33:02.9880041Z             }
2026-07-26T22:33:02.9880126Z           ]
2026-07-26T22:33:02.9880221Z         }
2026-07-26T22:33:02.9880303Z       }
2026-07-26T22:33:02.9880389Z     },
2026-07-26T22:33:02.9880474Z     {
2026-07-26T22:33:02.9880599Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-07-26T22:33:02.9884290Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-07-26T22:33:02.9884430Z       "requiredStages": [
2026-07-26T22:33:02.9884525Z         "impl",
2026-07-26T22:33:02.9884619Z         "unit"
2026-07-26T22:33:02.9884696Z       ],
2026-07-26T22:33:02.9884782Z       "stages": {
2026-07-26T22:33:02.9884868Z         "doc": {
2026-07-26T22:33:02.9884966Z           "complete": false,
2026-07-26T22:33:02.9885047Z           "evidence": []
2026-07-26T22:33:02.9885143Z         },
2026-07-26T22:33:02.9885231Z         "impl": {
2026-07-26T22:33:02.9885335Z           "complete": true,
2026-07-26T22:33:02.9885426Z           "evidence": [
2026-07-26T22:33:02.9885509Z             {
2026-07-26T22:33:02.9885621Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9885832Z               "line": 551
2026-07-26T22:33:02.9885917Z             },
2026-07-26T22:33:02.9885998Z             {
2026-07-26T22:33:02.9886104Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9886209Z               "line": 3356
2026-07-26T22:33:02.9886289Z             },
2026-07-26T22:33:02.9886381Z             {
2026-07-26T22:33:02.9886485Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9886585Z               "line": 7433
2026-07-26T22:33:02.9886667Z             }
2026-07-26T22:33:02.9886753Z           ]
2026-07-26T22:33:02.9886829Z         },
2026-07-26T22:33:02.9886914Z         "int": {
2026-07-26T22:33:02.9887010Z           "complete": false,
2026-07-26T22:33:02.9887109Z           "evidence": []
2026-07-26T22:33:02.9887195Z         },
2026-07-26T22:33:02.9887292Z         "unit": {
2026-07-26T22:33:02.9887496Z           "complete": true,
2026-07-26T22:33:02.9887592Z           "evidence": [
2026-07-26T22:33:02.9887678Z             {
2026-07-26T22:33:02.9887805Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9887899Z               "line": 1238
2026-07-26T22:33:02.9887991Z             },
2026-07-26T22:33:02.9888073Z             {
2026-07-26T22:33:02.9888186Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:02.9888272Z               "line": 15343
2026-07-26T22:33:02.9888358Z             }
2026-07-26T22:33:02.9888443Z           ]
2026-07-26T22:33:02.9888524Z         }
2026-07-26T22:33:02.9888607Z       }
2026-07-26T22:33:02.9888687Z     },
2026-07-26T22:33:02.9888768Z     {
2026-07-26T22:33:02.9888887Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-07-26T22:33:02.9892303Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-07-26T22:33:02.9892413Z       "requiredStages": [],
2026-07-26T22:33:02.9892499Z       "stages": {
2026-07-26T22:33:02.9892584Z         "doc": {
2026-07-26T22:33:02.9892665Z           "complete": false,
2026-07-26T22:33:02.9892767Z           "evidence": []
2026-07-26T22:33:02.9892851Z         },
2026-07-26T22:33:02.9892941Z         "impl": {
2026-07-26T22:33:02.9893026Z           "complete": false,
2026-07-26T22:33:02.9893126Z           "evidence": []
2026-07-26T22:33:02.9893206Z         },
2026-07-26T22:33:02.9893290Z         "int": {
2026-07-26T22:33:02.9893377Z           "complete": false,
2026-07-26T22:33:02.9893473Z           "evidence": []
2026-07-26T22:33:02.9893553Z         },
2026-07-26T22:33:02.9893643Z         "unit": {
2026-07-26T22:33:02.9893731Z           "complete": false,
2026-07-26T22:33:02.9893821Z           "evidence": []
2026-07-26T22:33:02.9893901Z         }
2026-07-26T22:33:02.9893992Z       }
2026-07-26T22:33:02.9894074Z     },
2026-07-26T22:33:02.9894150Z     {
2026-07-26T22:33:02.9894259Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-07-26T22:33:02.9894488Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-07-26T22:33:02.9894694Z       "requiredStages": [
2026-07-26T22:33:02.9894788Z         "impl",
2026-07-26T22:33:02.9894865Z         "unit"
2026-07-26T22:33:02.9894951Z       ],
2026-07-26T22:33:02.9895027Z       "stages": {
2026-07-26T22:33:02.9895122Z         "doc": {
2026-07-26T22:33:02.9895213Z           "complete": false,
2026-07-26T22:33:02.9895314Z           "evidence": []
2026-07-26T22:33:02.9895400Z         },
2026-07-26T22:33:02.9895493Z         "impl": {
2026-07-26T22:33:02.9895579Z           "complete": true,
2026-07-26T22:33:02.9895679Z           "evidence": [
2026-07-26T22:33:02.9895763Z             {
2026-07-26T22:33:02.9895886Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:02.9895968Z               "line": 14
2026-07-26T22:33:02.9896049Z             },
2026-07-26T22:33:02.9896125Z             {
2026-07-26T22:33:02.9896364Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:02.9896454Z               "line": 677
2026-07-26T22:33:02.9896530Z             }
2026-07-26T22:33:02.9896617Z           ]
2026-07-26T22:33:02.9896706Z         },
2026-07-26T22:33:02.9896792Z         "int": {
2026-07-26T22:33:02.9896888Z           "complete": false,
2026-07-26T22:33:02.9896974Z           "evidence": []
2026-07-26T22:33:02.9897059Z         },
2026-07-26T22:33:02.9897140Z         "unit": {
2026-07-26T22:33:02.9897237Z           "complete": true,
2026-07-26T22:33:02.9897322Z           "evidence": [
2026-07-26T22:33:02.9897408Z             {
2026-07-26T22:33:02.9897522Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:02.9897614Z               "line": 280
2026-07-26T22:33:02.9897702Z             },
2026-07-26T22:33:02.9897789Z             {
2026-07-26T22:33:02.9897914Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:02.9898017Z               "line": 288
2026-07-26T22:33:02.9898118Z             },
2026-07-26T22:33:02.9898214Z             {
2026-07-26T22:33:02.9898337Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:02.9898431Z               "line": 296
2026-07-26T22:33:02.9898517Z             },
2026-07-26T22:33:02.9898599Z             {
2026-07-26T22:33:02.9898708Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:02.9898808Z               "line": 304
2026-07-26T22:33:02.9898890Z             },
2026-07-26T22:33:02.9899065Z             {
2026-07-26T22:33:02.9899172Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:02.9899247Z               "line": 312
2026-07-26T22:33:02.9899342Z             },
2026-07-26T22:33:02.9899414Z             {
2026-07-26T22:33:02.9899520Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:02.9899604Z               "line": 320
2026-07-26T22:33:02.9899680Z             }
2026-07-26T22:33:02.9899767Z           ]
2026-07-26T22:33:02.9899868Z         }
2026-07-26T22:33:02.9899948Z       }
2026-07-26T22:33:02.9900034Z     },
2026-07-26T22:33:02.9900111Z     {
2026-07-26T22:33:02.9900229Z       "id": "REQ-HAZARD-MESH-BOOTSTRAP-TRAP",
2026-07-26T22:33:02.9903710Z       "title": "MESH-RECOVERY W1 (KNOWN-HAZARDS 7.42, hertz field RCA 2026-07-10 — HFENDULEAM+ENLYZEAM symmetric green-status sequester): a node holding a valid RosterEntry.address for a peer is NEVER route-less — a failed dial must not delete the only bootstrap route, and recovery must never require an already-successful connection or operator state surgery. Today: resolve_submit_addr = exact cache else id-only (never roster), PRESENCE_DIAL_FAILED unconditionally drop_seed's the cache row, and the cache refills only after a successful seed-proof exchange — one transient + stalled discovery = self-sustaining isolation, invisible (net_up true, heartbeat fresh, durable counts normal). Gate: int — production-path regression at the REAL pump resolver/failure-lifecycle seam: valid roster + matching cache, ONE transient dial failure, id-only discovery DISABLED, prove the next attempt still holds the roster-derived route AND all-peer-fail-then-restore converges with zero state surgery; doc — KNOWN-HAZARDS 7.42. HEAVY nextest group at birth if it spawns a daemon tree. Kin REQ-PEER-ROUTE-CHAIN (the mechanism), REQ-CONV-1 (the falsified drop-on-fail predecessor), ADR-0039.",
2026-07-26T22:33:02.9903937Z       "requiredStages": [
2026-07-26T22:33:02.9904033Z         "doc",
2026-07-26T22:33:02.9904113Z         "int"
2026-07-26T22:33:02.9904198Z       ],
2026-07-26T22:33:02.9904271Z       "stages": {
2026-07-26T22:33:02.9904371Z         "doc": {
2026-07-26T22:33:02.9904456Z           "complete": true,
2026-07-26T22:33:02.9904552Z           "evidence": [
2026-07-26T22:33:02.9904638Z             {
2026-07-26T22:33:02.9904757Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9904837Z               "line": 683
2026-07-26T22:33:02.9904925Z             },
2026-07-26T22:33:02.9905010Z             {
2026-07-26T22:33:02.9905129Z               "path": "docs/MESH-RECOVERY-TRIAGE.md",
2026-07-26T22:33:02.9905330Z               "line": 3
2026-07-26T22:33:02.9905410Z             }
2026-07-26T22:33:02.9905511Z           ]
2026-07-26T22:33:02.9905597Z         },
2026-07-26T22:33:02.9905691Z         "impl": {
2026-07-26T22:33:02.9905787Z           "complete": false,
2026-07-26T22:33:02.9905884Z           "evidence": []
2026-07-26T22:33:02.9905969Z         },
2026-07-26T22:33:02.9906049Z         "int": {
2026-07-26T22:33:02.9906143Z           "complete": true,
2026-07-26T22:33:02.9906234Z           "evidence": [
2026-07-26T22:33:02.9906319Z             {
2026-07-26T22:33:02.9906460Z               "path": "crates/spt-daemon/tests/mesh_recovery.rs",
2026-07-26T22:33:02.9906542Z               "line": 208
2026-07-26T22:33:02.9906629Z             }
2026-07-26T22:33:02.9906718Z           ]
2026-07-26T22:33:02.9906804Z         },
2026-07-26T22:33:02.9906886Z         "unit": {
2026-07-26T22:33:02.9906986Z           "complete": false,
2026-07-26T22:33:02.9907075Z           "evidence": []
2026-07-26T22:33:02.9907172Z         }
2026-07-26T22:33:02.9907253Z       }
2026-07-26T22:33:02.9907334Z     },
2026-07-26T22:33:02.9907414Z     {
2026-07-26T22:33:02.9907534Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-07-26T22:33:02.9908407Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-07-26T22:33:02.9908517Z       "requiredStages": [
2026-07-26T22:33:02.9908601Z         "impl",
2026-07-26T22:33:02.9908698Z         "unit"
2026-07-26T22:33:02.9908784Z       ],
2026-07-26T22:33:02.9908869Z       "stages": {
2026-07-26T22:33:02.9909034Z         "doc": {
2026-07-26T22:33:02.9909140Z           "complete": false,
2026-07-26T22:33:02.9909231Z           "evidence": []
2026-07-26T22:33:02.9909311Z         },
2026-07-26T22:33:02.9909402Z         "impl": {
2026-07-26T22:33:02.9909536Z           "complete": true,
2026-07-26T22:33:02.9909621Z           "evidence": [
2026-07-26T22:33:02.9909703Z             {
2026-07-26T22:33:02.9909846Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-07-26T22:33:02.9909940Z               "line": 34
2026-07-26T22:33:02.9910027Z             }
2026-07-26T22:33:02.9910113Z           ]
2026-07-26T22:33:02.9910203Z         },
2026-07-26T22:33:02.9910279Z         "int": {
2026-07-26T22:33:02.9910380Z           "complete": false,
2026-07-26T22:33:02.9910474Z           "evidence": []
2026-07-26T22:33:02.9910565Z         },
2026-07-26T22:33:02.9910647Z         "unit": {
2026-07-26T22:33:02.9910747Z           "complete": true,
2026-07-26T22:33:02.9910827Z           "evidence": [
2026-07-26T22:33:02.9910908Z             {
2026-07-26T22:33:02.9911048Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-07-26T22:33:02.9911184Z               "line": 188
2026-07-26T22:33:02.9911260Z             },
2026-07-26T22:33:02.9911370Z             {
2026-07-26T22:33:02.9911567Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-07-26T22:33:02.9911849Z               "line": 200
2026-07-26T22:33:02.9911973Z             },
2026-07-26T22:33:02.9912098Z             {
2026-07-26T22:33:02.9912299Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-07-26T22:33:02.9912450Z               "line": 211
2026-07-26T22:33:02.9912570Z             },
2026-07-26T22:33:02.9912698Z             {
2026-07-26T22:33:02.9912855Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-07-26T22:33:02.9912952Z               "line": 253
2026-07-26T22:33:02.9913046Z             },
2026-07-26T22:33:02.9913127Z             {
2026-07-26T22:33:02.9913262Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-07-26T22:33:02.9913346Z               "line": 277
2026-07-26T22:33:02.9913432Z             },
2026-07-26T22:33:02.9913514Z             {
2026-07-26T22:33:02.9913776Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-07-26T22:33:02.9913872Z               "line": 300
2026-07-26T22:33:02.9913962Z             },
2026-07-26T22:33:02.9914037Z             {
2026-07-26T22:33:02.9914175Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-07-26T22:33:02.9914261Z               "line": 316
2026-07-26T22:33:02.9914421Z             }
2026-07-26T22:33:02.9914511Z           ]
2026-07-26T22:33:02.9914584Z         }
2026-07-26T22:33:02.9914673Z       }
2026-07-26T22:33:02.9914788Z     },
2026-07-26T22:33:02.9914917Z     {
2026-07-26T22:33:02.9915088Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-07-26T22:33:02.9915699Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-07-26T22:33:02.9915800Z       "requiredStages": [
2026-07-26T22:33:02.9915908Z         "impl",
2026-07-26T22:33:02.9916013Z         "unit"
2026-07-26T22:33:02.9916144Z       ],
2026-07-26T22:33:02.9916228Z       "stages": {
2026-07-26T22:33:02.9916304Z         "doc": {
2026-07-26T22:33:02.9916401Z           "complete": false,
2026-07-26T22:33:02.9916491Z           "evidence": []
2026-07-26T22:33:02.9916571Z         },
2026-07-26T22:33:02.9916651Z         "impl": {
2026-07-26T22:33:02.9916751Z           "complete": true,
2026-07-26T22:33:02.9916851Z           "evidence": [
2026-07-26T22:33:02.9916940Z             {
2026-07-26T22:33:02.9917054Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:02.9917151Z               "line": 29
2026-07-26T22:33:02.9917236Z             },
2026-07-26T22:33:02.9917316Z             {
2026-07-26T22:33:02.9917432Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:02.9917532Z               "line": 174
2026-07-26T22:33:02.9917616Z             },
2026-07-26T22:33:02.9917708Z             {
2026-07-26T22:33:02.9917823Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:02.9917931Z               "line": 194
2026-07-26T22:33:02.9918013Z             },
2026-07-26T22:33:02.9918108Z             {
2026-07-26T22:33:02.9918223Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:02.9918313Z               "line": 222
2026-07-26T22:33:02.9918395Z             }
2026-07-26T22:33:02.9918475Z           ]
2026-07-26T22:33:02.9918561Z         },
2026-07-26T22:33:02.9918652Z         "int": {
2026-07-26T22:33:02.9918748Z           "complete": false,
2026-07-26T22:33:02.9918847Z           "evidence": []
2026-07-26T22:33:02.9918928Z         },
2026-07-26T22:33:02.9919123Z         "unit": {
2026-07-26T22:33:02.9919205Z           "complete": true,
2026-07-26T22:33:02.9919306Z           "evidence": [
2026-07-26T22:33:02.9919387Z             {
2026-07-26T22:33:02.9919509Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:02.9919594Z               "line": 329
2026-07-26T22:33:02.9919701Z             },
2026-07-26T22:33:02.9919777Z             {
2026-07-26T22:33:02.9919900Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:02.9920134Z               "line": 344
2026-07-26T22:33:02.9920214Z             },
2026-07-26T22:33:02.9920296Z             {
2026-07-26T22:33:02.9920406Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:02.9920500Z               "line": 417
2026-07-26T22:33:02.9920582Z             },
2026-07-26T22:33:02.9920673Z             {
2026-07-26T22:33:02.9920782Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:02.9920873Z               "line": 433
2026-07-26T22:33:02.9920955Z             },
2026-07-26T22:33:02.9921039Z             {
2026-07-26T22:33:02.9921149Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:02.9921245Z               "line": 492
2026-07-26T22:33:02.9921331Z             },
2026-07-26T22:33:02.9921459Z             {
2026-07-26T22:33:02.9921599Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:02.9921882Z               "line": 506
2026-07-26T22:33:02.9921991Z             },
2026-07-26T22:33:02.9922114Z             {
2026-07-26T22:33:02.9922267Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:02.9922362Z               "line": 517
2026-07-26T22:33:02.9922438Z             },
2026-07-26T22:33:02.9922524Z             {
2026-07-26T22:33:02.9922658Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:02.9922767Z               "line": 528
2026-07-26T22:33:02.9922849Z             }
2026-07-26T22:33:02.9922929Z           ]
2026-07-26T22:33:02.9923015Z         }
2026-07-26T22:33:02.9923096Z       }
2026-07-26T22:33:02.9923178Z     },
2026-07-26T22:33:02.9923258Z     {
2026-07-26T22:33:02.9923377Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-07-26T22:33:02.9924074Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-07-26T22:33:02.9924175Z       "requiredStages": [
2026-07-26T22:33:02.9924273Z         "impl",
2026-07-26T22:33:02.9924355Z         "unit"
2026-07-26T22:33:02.9924437Z       ],
2026-07-26T22:33:02.9924518Z       "stages": {
2026-07-26T22:33:02.9924602Z         "doc": {
2026-07-26T22:33:02.9924696Z           "complete": false,
2026-07-26T22:33:02.9924788Z           "evidence": []
2026-07-26T22:33:02.9924867Z         },
2026-07-26T22:33:02.9924962Z         "impl": {
2026-07-26T22:33:02.9925057Z           "complete": true,
2026-07-26T22:33:02.9925148Z           "evidence": [
2026-07-26T22:33:02.9925233Z             {
2026-07-26T22:33:02.9925362Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-07-26T22:33:02.9925458Z               "line": 27
2026-07-26T22:33:02.9925544Z             },
2026-07-26T22:33:02.9925634Z             {
2026-07-26T22:33:02.9925764Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-07-26T22:33:02.9925868Z               "line": 110
2026-07-26T22:33:02.9925949Z             },
2026-07-26T22:33:02.9926040Z             {
2026-07-26T22:33:02.9926188Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-07-26T22:33:02.9926287Z               "line": 153
2026-07-26T22:33:02.9926365Z             },
2026-07-26T22:33:02.9926454Z             {
2026-07-26T22:33:02.9926573Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-07-26T22:33:02.9926655Z               "line": 182
2026-07-26T22:33:02.9926736Z             },
2026-07-26T22:33:02.9926821Z             {
2026-07-26T22:33:02.9926966Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-07-26T22:33:02.9927065Z               "line": 31
2026-07-26T22:33:02.9927150Z             },
2026-07-26T22:33:02.9927230Z             {
2026-07-26T22:33:02.9927373Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-07-26T22:33:02.9927471Z               "line": 113
2026-07-26T22:33:02.9927561Z             },
2026-07-26T22:33:02.9927638Z             {
2026-07-26T22:33:02.9927768Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-07-26T22:33:02.9927958Z               "line": 138
2026-07-26T22:33:02.9928035Z             }
2026-07-26T22:33:02.9928129Z           ]
2026-07-26T22:33:02.9928210Z         },
2026-07-26T22:33:02.9928302Z         "int": {
2026-07-26T22:33:02.9928397Z           "complete": false,
2026-07-26T22:33:02.9928496Z           "evidence": []
2026-07-26T22:33:02.9928583Z         },
2026-07-26T22:33:02.9928668Z         "unit": {
2026-07-26T22:33:02.9928764Z           "complete": true,
2026-07-26T22:33:02.9932678Z           "evidence": [
2026-07-26T22:33:02.9932793Z             {
2026-07-26T22:33:02.9932950Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-07-26T22:33:02.9933046Z               "line": 261
2026-07-26T22:33:02.9933142Z             },
2026-07-26T22:33:02.9933218Z             {
2026-07-26T22:33:02.9933360Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-07-26T22:33:02.9933622Z               "line": 276
2026-07-26T22:33:02.9933705Z             },
2026-07-26T22:33:02.9933804Z             {
2026-07-26T22:33:02.9933942Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-07-26T22:33:02.9934038Z               "line": 293
2026-07-26T22:33:02.9934119Z             },
2026-07-26T22:33:02.9934200Z             {
2026-07-26T22:33:02.9934319Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-07-26T22:33:02.9934406Z               "line": 310
2026-07-26T22:33:02.9934490Z             },
2026-07-26T22:33:02.9934571Z             {
2026-07-26T22:33:02.9934692Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-07-26T22:33:02.9934791Z               "line": 327
2026-07-26T22:33:02.9934863Z             },
2026-07-26T22:33:02.9934949Z             {
2026-07-26T22:33:02.9935078Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-07-26T22:33:02.9935176Z               "line": 366
2026-07-26T22:33:02.9935256Z             },
2026-07-26T22:33:02.9935333Z             {
2026-07-26T22:33:02.9935474Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-07-26T22:33:02.9935578Z               "line": 179
2026-07-26T22:33:02.9935660Z             },
2026-07-26T22:33:02.9935737Z             {
2026-07-26T22:33:02.9935870Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-07-26T22:33:02.9935956Z               "line": 194
2026-07-26T22:33:02.9936042Z             },
2026-07-26T22:33:02.9936123Z             {
2026-07-26T22:33:02.9936262Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-07-26T22:33:02.9936357Z               "line": 204
2026-07-26T22:33:02.9936438Z             },
2026-07-26T22:33:02.9936523Z             {
2026-07-26T22:33:02.9936648Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-07-26T22:33:02.9936748Z               "line": 259
2026-07-26T22:33:02.9936833Z             },
2026-07-26T22:33:02.9936915Z             {
2026-07-26T22:33:02.9937048Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-07-26T22:33:02.9937148Z               "line": 269
2026-07-26T22:33:02.9937235Z             },
2026-07-26T22:33:02.9937320Z             {
2026-07-26T22:33:02.9937463Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-07-26T22:33:02.9937554Z               "line": 283
2026-07-26T22:33:02.9937644Z             }
2026-07-26T22:33:02.9937729Z           ]
2026-07-26T22:33:02.9937819Z         }
2026-07-26T22:33:02.9937905Z       }
2026-07-26T22:33:02.9937994Z     },
2026-07-26T22:33:02.9938075Z     {
2026-07-26T22:33:02.9938193Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-07-26T22:33:02.9938375Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-07-26T22:33:02.9938480Z       "requiredStages": [],
2026-07-26T22:33:02.9938566Z       "stages": {
2026-07-26T22:33:02.9938661Z         "doc": {
2026-07-26T22:33:02.9938770Z           "complete": false,
2026-07-26T22:33:02.9938862Z           "evidence": []
2026-07-26T22:33:02.9939028Z         },
2026-07-26T22:33:02.9939219Z         "impl": {
2026-07-26T22:33:02.9939314Z           "complete": false,
2026-07-26T22:33:02.9939409Z           "evidence": []
2026-07-26T22:33:02.9939497Z         },
2026-07-26T22:33:02.9939586Z         "int": {
2026-07-26T22:33:02.9939681Z           "complete": false,
2026-07-26T22:33:02.9939768Z           "evidence": []
2026-07-26T22:33:02.9939840Z         },
2026-07-26T22:33:02.9939929Z         "unit": {
2026-07-26T22:33:02.9940025Z           "complete": false,
2026-07-26T22:33:02.9940121Z           "evidence": []
2026-07-26T22:33:02.9940201Z         }
2026-07-26T22:33:02.9940296Z       }
2026-07-26T22:33:02.9940368Z     },
2026-07-26T22:33:02.9940455Z     {
2026-07-26T22:33:02.9940582Z       "id": "REQ-HAZARD-PERCH-RECORD-POWER-LOSS",
2026-07-26T22:33:02.9941140Z       "title": "Authoritative/identity records fsync data before the rename (5.13): a hard reset must not resurrect a full-length NUL-filled record — SCOPED, not a blanket fsync",
2026-07-26T22:33:02.9941325Z       "requiredStages": [
2026-07-26T22:33:02.9941431Z         "impl",
2026-07-26T22:33:02.9941512Z         "unit"
2026-07-26T22:33:02.9941592Z       ],
2026-07-26T22:33:02.9941674Z       "stages": {
2026-07-26T22:33:02.9941765Z         "doc": {
2026-07-26T22:33:02.9941854Z           "complete": true,
2026-07-26T22:33:02.9941954Z           "evidence": [
2026-07-26T22:33:02.9942037Z             {
2026-07-26T22:33:02.9942150Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9942246Z               "line": 264
2026-07-26T22:33:02.9942327Z             }
2026-07-26T22:33:02.9942404Z           ]
2026-07-26T22:33:02.9942489Z         },
2026-07-26T22:33:02.9942575Z         "impl": {
2026-07-26T22:33:02.9942671Z           "complete": true,
2026-07-26T22:33:02.9942766Z           "evidence": [
2026-07-26T22:33:02.9942846Z             {
2026-07-26T22:33:02.9942979Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-07-26T22:33:02.9943060Z               "line": 131
2026-07-26T22:33:02.9943158Z             },
2026-07-26T22:33:02.9943243Z             {
2026-07-26T22:33:02.9943368Z               "path": "crates/spt-store/src/atomic.rs",
2026-07-26T22:33:02.9943450Z               "line": 93
2026-07-26T22:33:02.9943529Z             },
2026-07-26T22:33:02.9943615Z             {
2026-07-26T22:33:02.9943730Z               "path": "crates/spt-store/src/atomic.rs",
2026-07-26T22:33:02.9943821Z               "line": 99
2026-07-26T22:33:02.9943906Z             },
2026-07-26T22:33:02.9943983Z             {
2026-07-26T22:33:02.9944098Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9944187Z               "line": 632
2026-07-26T22:33:02.9944275Z             },
2026-07-26T22:33:02.9944346Z             {
2026-07-26T22:33:02.9944464Z               "path": "crates/spt-store/src/nodeid.rs",
2026-07-26T22:33:02.9944550Z               "line": 94
2026-07-26T22:33:02.9944637Z             }
2026-07-26T22:33:02.9944717Z           ]
2026-07-26T22:33:02.9944803Z         },
2026-07-26T22:33:02.9944889Z         "int": {
2026-07-26T22:33:02.9944990Z           "complete": false,
2026-07-26T22:33:02.9945084Z           "evidence": []
2026-07-26T22:33:02.9945165Z         },
2026-07-26T22:33:02.9945252Z         "unit": {
2026-07-26T22:33:02.9945351Z           "complete": true,
2026-07-26T22:33:02.9945442Z           "evidence": [
2026-07-26T22:33:02.9945514Z             {
2026-07-26T22:33:02.9945620Z               "path": "crates/spt-store/src/atomic.rs",
2026-07-26T22:33:02.9945713Z               "line": 257
2026-07-26T22:33:02.9945798Z             }
2026-07-26T22:33:02.9945884Z           ]
2026-07-26T22:33:02.9945983Z         }
2026-07-26T22:33:02.9946063Z       }
2026-07-26T22:33:02.9946143Z     },
2026-07-26T22:33:02.9946230Z     {
2026-07-26T22:33:02.9946363Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-07-26T22:33:02.9947269Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-07-26T22:33:02.9947537Z       "requiredStages": [
2026-07-26T22:33:02.9947626Z         "impl",
2026-07-26T22:33:02.9947718Z         "unit"
2026-07-26T22:33:02.9947800Z       ],
2026-07-26T22:33:02.9947894Z       "stages": {
2026-07-26T22:33:02.9947980Z         "doc": {
2026-07-26T22:33:02.9948076Z           "complete": false,
2026-07-26T22:33:02.9948163Z           "evidence": []
2026-07-26T22:33:02.9948251Z         },
2026-07-26T22:33:02.9948332Z         "impl": {
2026-07-26T22:33:02.9948432Z           "complete": true,
2026-07-26T22:33:02.9948503Z           "evidence": [
2026-07-26T22:33:02.9948587Z             {
2026-07-26T22:33:02.9948715Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-07-26T22:33:02.9948797Z               "line": 26
2026-07-26T22:33:02.9949025Z             },
2026-07-26T22:33:02.9949117Z             {
2026-07-26T22:33:02.9949240Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-07-26T22:33:02.9949335Z               "line": 95
2026-07-26T22:33:02.9949422Z             },
2026-07-26T22:33:02.9949517Z             {
2026-07-26T22:33:02.9949631Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-07-26T22:33:02.9949732Z               "line": 172
2026-07-26T22:33:02.9949808Z             },
2026-07-26T22:33:02.9949893Z             {
2026-07-26T22:33:02.9950013Z               "path": "crates/spt-live/src/outbound.rs",
2026-07-26T22:33:02.9950108Z               "line": 19
2026-07-26T22:33:02.9950185Z             },
2026-07-26T22:33:02.9950270Z             {
2026-07-26T22:33:02.9950381Z               "path": "crates/spt-live/src/outbound.rs",
2026-07-26T22:33:02.9950470Z               "line": 50
2026-07-26T22:33:02.9950547Z             },
2026-07-26T22:33:02.9950628Z             {
2026-07-26T22:33:02.9950743Z               "path": "crates/spt-live/src/turn.rs",
2026-07-26T22:33:02.9950842Z               "line": 18
2026-07-26T22:33:02.9950923Z             },
2026-07-26T22:33:02.9951015Z             {
2026-07-26T22:33:02.9951123Z               "path": "crates/spt-live/src/turn.rs",
2026-07-26T22:33:02.9951218Z               "line": 112
2026-07-26T22:33:02.9951299Z             },
2026-07-26T22:33:02.9951381Z             {
2026-07-26T22:33:02.9951499Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:02.9951590Z               "line": 96
2026-07-26T22:33:02.9951671Z             }
2026-07-26T22:33:02.9951743Z           ]
2026-07-26T22:33:02.9951828Z         },
2026-07-26T22:33:02.9951909Z         "int": {
2026-07-26T22:33:02.9952010Z           "complete": false,
2026-07-26T22:33:02.9952096Z           "evidence": []
2026-07-26T22:33:02.9952176Z         },
2026-07-26T22:33:02.9952253Z         "unit": {
2026-07-26T22:33:02.9952348Z           "complete": true,
2026-07-26T22:33:02.9952444Z           "evidence": [
2026-07-26T22:33:02.9952529Z             {
2026-07-26T22:33:02.9952649Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-07-26T22:33:02.9952748Z               "line": 295
2026-07-26T22:33:02.9952834Z             },
2026-07-26T22:33:02.9952922Z             {
2026-07-26T22:33:02.9953039Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-07-26T22:33:02.9953135Z               "line": 320
2026-07-26T22:33:02.9953226Z             },
2026-07-26T22:33:02.9953321Z             {
2026-07-26T22:33:02.9953448Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-07-26T22:33:02.9953539Z               "line": 356
2026-07-26T22:33:02.9953625Z             },
2026-07-26T22:33:02.9953709Z             {
2026-07-26T22:33:02.9953832Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-07-26T22:33:02.9953928Z               "line": 424
2026-07-26T22:33:02.9954000Z             },
2026-07-26T22:33:02.9954085Z             {
2026-07-26T22:33:02.9954205Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-07-26T22:33:02.9954300Z               "line": 435
2026-07-26T22:33:02.9954385Z             },
2026-07-26T22:33:02.9954476Z             {
2026-07-26T22:33:02.9954695Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-07-26T22:33:02.9954781Z               "line": 466
2026-07-26T22:33:02.9954853Z             },
2026-07-26T22:33:02.9954934Z             {
2026-07-26T22:33:02.9955053Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-07-26T22:33:02.9955154Z               "line": 477
2026-07-26T22:33:02.9955277Z             },
2026-07-26T22:33:02.9955368Z             {
2026-07-26T22:33:02.9955550Z               "path": "crates/spt-live/src/outbound.rs",
2026-07-26T22:33:02.9955678Z               "line": 77
2026-07-26T22:33:02.9955803Z             },
2026-07-26T22:33:02.9955935Z             {
2026-07-26T22:33:02.9956132Z               "path": "crates/spt-live/src/outbound.rs",
2026-07-26T22:33:02.9956273Z               "line": 97
2026-07-26T22:33:02.9956651Z             },
2026-07-26T22:33:02.9956728Z             {
2026-07-26T22:33:02.9956862Z               "path": "crates/spt-live/src/outbound.rs",
2026-07-26T22:33:02.9956961Z               "line": 112
2026-07-26T22:33:02.9957033Z             },
2026-07-26T22:33:02.9957125Z             {
2026-07-26T22:33:02.9957257Z               "path": "crates/spt-live/src/outbound.rs",
2026-07-26T22:33:02.9957348Z               "line": 123
2026-07-26T22:33:02.9957430Z             },
2026-07-26T22:33:02.9957500Z             {
2026-07-26T22:33:02.9957629Z               "path": "crates/spt-live/src/outbound.rs",
2026-07-26T22:33:02.9957716Z               "line": 130
2026-07-26T22:33:02.9957806Z             },
2026-07-26T22:33:02.9957887Z             {
2026-07-26T22:33:02.9958006Z               "path": "crates/spt-live/src/outbound.rs",
2026-07-26T22:33:02.9958097Z               "line": 145
2026-07-26T22:33:02.9958172Z             },
2026-07-26T22:33:02.9958253Z             {
2026-07-26T22:33:02.9958364Z               "path": "crates/spt-live/src/turn.rs",
2026-07-26T22:33:02.9958459Z               "line": 162
2026-07-26T22:33:02.9958540Z             },
2026-07-26T22:33:02.9958626Z             {
2026-07-26T22:33:02.9958746Z               "path": "crates/spt-live/src/turn.rs",
2026-07-26T22:33:02.9958830Z               "line": 177
2026-07-26T22:33:02.9958915Z             },
2026-07-26T22:33:02.9959082Z             {
2026-07-26T22:33:02.9959195Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:02.9959285Z               "line": 437
2026-07-26T22:33:02.9959367Z             }
2026-07-26T22:33:02.9959444Z           ]
2026-07-26T22:33:02.9959533Z         }
2026-07-26T22:33:02.9959614Z       }
2026-07-26T22:33:02.9959710Z     },
2026-07-26T22:33:02.9959796Z     {
2026-07-26T22:33:02.9959939Z       "id": "REQ-HAZARD-PSYCHE-RESIDENCY-EXPECTATION",
2026-07-26T22:33:02.9962880Z       "title": "W3 (F030 hazard; paid-for: hall-bf churn ordinal 6491+ + adapter v0.13.2 bad-ship brick 2026-07-04): a psyche failure of ANY shape must NOT remove or alter the parent endpoint's ready/hosted state, and hosting must NOT churn-respawn. The v0.13.2 shim-exit tripped the residency machinery (confirm_residency_or_unhost) which tore down the endpoint's hosted state — ready marker removed, never re-stamped, every force-native gated leg=cli-gate-not-hosted PERMANENTLY (field brick). FIX: residency machinery retires with the resident child; the teardown that touches parent hosted state is DELETED — psyche trouble stamps psyche fields only. REQ-HAZARD-LIVEHOST-NONRESIDENT's spirit transfers to the W1 failure budget (its entry gets a SUPERSEDED pointer here, LIVENESS-DECAY→SUPERSEDED pattern from C-1). Conformance int = the hall-bf shape: multi-subnet home, live endpoint, failing psyche → parent stays deliverable, no rehost churn, error stamped (the wave's heart).",
2026-07-26T22:33:02.9962989Z       "requiredStages": [
2026-07-26T22:33:02.9963079Z         "doc",
2026-07-26T22:33:02.9963157Z         "impl",
2026-07-26T22:33:02.9963256Z         "int"
2026-07-26T22:33:02.9963342Z       ],
2026-07-26T22:33:02.9963433Z       "stages": {
2026-07-26T22:33:02.9963515Z         "doc": {
2026-07-26T22:33:02.9963752Z           "complete": true,
2026-07-26T22:33:02.9963834Z           "evidence": [
2026-07-26T22:33:02.9963928Z             {
2026-07-26T22:33:02.9964037Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9964128Z               "line": 592
2026-07-26T22:33:02.9964203Z             },
2026-07-26T22:33:02.9964288Z             {
2026-07-26T22:33:02.9964392Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9964483Z               "line": 869
2026-07-26T22:33:02.9964565Z             }
2026-07-26T22:33:02.9964650Z           ]
2026-07-26T22:33:02.9964731Z         },
2026-07-26T22:33:02.9964808Z         "impl": {
2026-07-26T22:33:02.9964903Z           "complete": true,
2026-07-26T22:33:02.9964992Z           "evidence": [
2026-07-26T22:33:02.9965085Z             {
2026-07-26T22:33:02.9965203Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.9965405Z               "line": 71
2026-07-26T22:33:02.9965494Z             },
2026-07-26T22:33:02.9965580Z             {
2026-07-26T22:33:02.9965714Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.9965804Z               "line": 1191
2026-07-26T22:33:02.9965885Z             },
2026-07-26T22:33:02.9965980Z             {
2026-07-26T22:33:02.9966100Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.9966199Z               "line": 184
2026-07-26T22:33:02.9966280Z             },
2026-07-26T22:33:02.9966373Z             {
2026-07-26T22:33:02.9966490Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:02.9966576Z               "line": 649
2026-07-26T22:33:02.9966653Z             }
2026-07-26T22:33:02.9966744Z           ]
2026-07-26T22:33:02.9966824Z         },
2026-07-26T22:33:02.9966909Z         "int": {
2026-07-26T22:33:02.9966995Z           "complete": true,
2026-07-26T22:33:02.9967089Z           "evidence": [
2026-07-26T22:33:02.9967174Z             {
2026-07-26T22:33:02.9967394Z               "path": "crates/spt-daemon/tests/psyche_residency_expectation_e2e.rs",
2026-07-26T22:33:02.9967493Z               "line": 43
2026-07-26T22:33:02.9967574Z             },
2026-07-26T22:33:02.9967651Z             {
2026-07-26T22:33:02.9967832Z               "path": "crates/spt-daemon/tests/psyche_residency_expectation_e2e.rs",
2026-07-26T22:33:02.9967922Z               "line": 118
2026-07-26T22:33:02.9968019Z             }
2026-07-26T22:33:02.9968104Z           ]
2026-07-26T22:33:02.9968198Z         },
2026-07-26T22:33:02.9968281Z         "unit": {
2026-07-26T22:33:02.9968380Z           "complete": true,
2026-07-26T22:33:02.9968471Z           "evidence": [
2026-07-26T22:33:02.9968561Z             {
2026-07-26T22:33:02.9968686Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:02.9968776Z               "line": 1866
2026-07-26T22:33:02.9968847Z             }
2026-07-26T22:33:02.9969124Z           ]
2026-07-26T22:33:02.9969201Z         }
2026-07-26T22:33:02.9969297Z       }
2026-07-26T22:33:02.9969528Z     },
2026-07-26T22:33:02.9969703Z     {
2026-07-26T22:33:02.9969917Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-07-26T22:33:02.9976397Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-07-26T22:33:02.9982461Z       "requiredStages": [
2026-07-26T22:33:02.9982898Z         "impl",
2026-07-26T22:33:02.9983085Z         "unit",
2026-07-26T22:33:02.9983246Z         "int"
2026-07-26T22:33:02.9983409Z       ],
2026-07-26T22:33:02.9983575Z       "stages": {
2026-07-26T22:33:02.9983752Z         "doc": {
2026-07-26T22:33:02.9983972Z           "complete": false,
2026-07-26T22:33:02.9984180Z           "evidence": []
2026-07-26T22:33:02.9984381Z         },
2026-07-26T22:33:02.9984543Z         "impl": {
2026-07-26T22:33:02.9984719Z           "complete": true,
2026-07-26T22:33:02.9984921Z           "evidence": [
2026-07-26T22:33:02.9985157Z             {
2026-07-26T22:33:02.9985365Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9985608Z               "line": 2856
2026-07-26T22:33:02.9985807Z             },
2026-07-26T22:33:02.9985976Z             {
2026-07-26T22:33:02.9986171Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:02.9986414Z               "line": 514
2026-07-26T22:33:02.9986590Z             }
2026-07-26T22:33:02.9986757Z           ]
2026-07-26T22:33:02.9986919Z         },
2026-07-26T22:33:02.9987086Z         "int": {
2026-07-26T22:33:02.9987272Z           "complete": true,
2026-07-26T22:33:02.9987474Z           "evidence": [
2026-07-26T22:33:02.9987658Z             {
2026-07-26T22:33:02.9987892Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:02.9988177Z               "line": 2775
2026-07-26T22:33:02.9988360Z             },
2026-07-26T22:33:02.9988529Z             {
2026-07-26T22:33:02.9988762Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:02.9989124Z               "line": 2815
2026-07-26T22:33:02.9989314Z             }
2026-07-26T22:33:02.9989486Z           ]
2026-07-26T22:33:02.9989648Z         },
2026-07-26T22:33:02.9989815Z         "unit": {
2026-07-26T22:33:02.9989997Z           "complete": true,
2026-07-26T22:33:02.9990196Z           "evidence": [
2026-07-26T22:33:02.9990370Z             {
2026-07-26T22:33:02.9990567Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9990818Z               "line": 6868
2026-07-26T22:33:02.9991009Z             },
2026-07-26T22:33:02.9991185Z             {
2026-07-26T22:33:02.9991414Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9991653Z               "line": 6932
2026-07-26T22:33:02.9991843Z             },
2026-07-26T22:33:02.9992011Z             {
2026-07-26T22:33:02.9992302Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:02.9992563Z               "line": 7946
2026-07-26T22:33:02.9992748Z             }
2026-07-26T22:33:02.9992908Z           ]
2026-07-26T22:33:02.9993092Z         }
2026-07-26T22:33:02.9993289Z       }
2026-07-26T22:33:02.9993592Z     },
2026-07-26T22:33:02.9993753Z     {
2026-07-26T22:33:02.9993941Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-07-26T22:33:02.9994941Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-07-26T22:33:02.9995798Z       "requiredStages": [
2026-07-26T22:33:02.9995992Z         "doc",
2026-07-26T22:33:02.9996164Z         "impl",
2026-07-26T22:33:02.9996330Z         "unit"
2026-07-26T22:33:02.9996493Z       ],
2026-07-26T22:33:02.9996659Z       "stages": {
2026-07-26T22:33:02.9996822Z         "doc": {
2026-07-26T22:33:02.9997002Z           "complete": true,
2026-07-26T22:33:02.9997213Z           "evidence": [
2026-07-26T22:33:02.9997513Z             {
2026-07-26T22:33:02.9997704Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:02.9997942Z               "line": 409
2026-07-26T22:33:02.9998137Z             }
2026-07-26T22:33:02.9998305Z           ]
2026-07-26T22:33:02.9998471Z         },
2026-07-26T22:33:02.9998637Z         "impl": {
2026-07-26T22:33:02.9998821Z           "complete": true,
2026-07-26T22:33:02.9999122Z           "evidence": [
2026-07-26T22:33:02.9999312Z             {
2026-07-26T22:33:02.9999512Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:02.9999761Z               "line": 284
2026-07-26T22:33:02.9999951Z             },
2026-07-26T22:33:03.0000118Z             {
2026-07-26T22:33:03.0000305Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.0000552Z               "line": 410
2026-07-26T22:33:03.0000732Z             },
2026-07-26T22:33:03.0000901Z             {
2026-07-26T22:33:03.0001099Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.0001350Z               "line": 742
2026-07-26T22:33:03.0001540Z             },
2026-07-26T22:33:03.0001712Z             {
2026-07-26T22:33:03.0001917Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.0002160Z               "line": 766
2026-07-26T22:33:03.0002346Z             },
2026-07-26T22:33:03.0002514Z             {
2026-07-26T22:33:03.0002708Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.0002947Z               "line": 1980
2026-07-26T22:33:03.0003143Z             },
2026-07-26T22:33:03.0003313Z             {
2026-07-26T22:33:03.0003520Z               "path": "crates/spt-daemon/src/digestlink.rs",
2026-07-26T22:33:03.0003773Z               "line": 85
2026-07-26T22:33:03.0003962Z             },
2026-07-26T22:33:03.0004128Z             {
2026-07-26T22:33:03.0004337Z               "path": "crates/spt-daemon/src/digestlink.rs",
2026-07-26T22:33:03.0004596Z               "line": 243
2026-07-26T22:33:03.0004787Z             },
2026-07-26T22:33:03.0004967Z             {
2026-07-26T22:33:03.0005173Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.0005436Z               "line": 203
2026-07-26T22:33:03.0005620Z             },
2026-07-26T22:33:03.0005788Z             {
2026-07-26T22:33:03.0005974Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.0006235Z               "line": 544
2026-07-26T22:33:03.0006416Z             },
2026-07-26T22:33:03.0006585Z             {
2026-07-26T22:33:03.0006787Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.0007039Z               "line": 715
2026-07-26T22:33:03.0007233Z             },
2026-07-26T22:33:03.0007396Z             {
2026-07-26T22:33:03.0007591Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.0007834Z               "line": 801
2026-07-26T22:33:03.0008021Z             },
2026-07-26T22:33:03.0008187Z             {
2026-07-26T22:33:03.0008387Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.0008646Z               "line": 1169
2026-07-26T22:33:03.0008841Z             },
2026-07-26T22:33:03.0009202Z             {
2026-07-26T22:33:03.0009400Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.0009639Z               "line": 685
2026-07-26T22:33:03.0009829Z             }
2026-07-26T22:33:03.0009997Z           ]
2026-07-26T22:33:03.0010163Z         },
2026-07-26T22:33:03.0010358Z         "int": {
2026-07-26T22:33:03.0010531Z           "complete": true,
2026-07-26T22:33:03.0010735Z           "evidence": [
2026-07-26T22:33:03.0010921Z             {
2026-07-26T22:33:03.0011141Z               "path": "crates/spt-daemon/tests/digest_cross_node.rs",
2026-07-26T22:33:03.0011422Z               "line": 381
2026-07-26T22:33:03.0011607Z             },
2026-07-26T22:33:03.0011773Z             {
2026-07-26T22:33:03.0011995Z               "path": "crates/spt-daemon/tests/digest_cross_node.rs",
2026-07-26T22:33:03.0012263Z               "line": 481
2026-07-26T22:33:03.0012568Z             }
2026-07-26T22:33:03.0012730Z           ]
2026-07-26T22:33:03.0012887Z         },
2026-07-26T22:33:03.0013059Z         "unit": {
2026-07-26T22:33:03.0013245Z           "complete": true,
2026-07-26T22:33:03.0013446Z           "evidence": [
2026-07-26T22:33:03.0013626Z             {
2026-07-26T22:33:03.0013831Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.0014075Z               "line": 1607
2026-07-26T22:33:03.0014260Z             },
2026-07-26T22:33:03.0014409Z             {
2026-07-26T22:33:03.0014674Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.0015071Z               "line": 1753
2026-07-26T22:33:03.0015361Z             },
2026-07-26T22:33:03.0015585Z             {
2026-07-26T22:33:03.0015842Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-07-26T22:33:03.0016152Z               "line": 30
2026-07-26T22:33:03.0016334Z             }
2026-07-26T22:33:03.0016495Z           ]
2026-07-26T22:33:03.0016677Z         }
2026-07-26T22:33:03.0016838Z       }
2026-07-26T22:33:03.0016995Z     },
2026-07-26T22:33:03.0017150Z     {
2026-07-26T22:33:03.0021843Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-07-26T22:33:03.0025434Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-07-26T22:33:03.0028850Z       "requiredStages": [
2026-07-26T22:33:03.0029156Z         "impl",
2026-07-26T22:33:03.0029341Z         "unit",
2026-07-26T22:33:03.0029550Z         "int"
2026-07-26T22:33:03.0029714Z       ],
2026-07-26T22:33:03.0029879Z       "stages": {
2026-07-26T22:33:03.0030057Z         "doc": {
2026-07-26T22:33:03.0030227Z           "complete": false,
2026-07-26T22:33:03.0030441Z           "evidence": []
2026-07-26T22:33:03.0030629Z         },
2026-07-26T22:33:03.0030793Z         "impl": {
2026-07-26T22:33:03.0030973Z           "complete": true,
2026-07-26T22:33:03.0031169Z           "evidence": [
2026-07-26T22:33:03.0031351Z             {
2026-07-26T22:33:03.0031540Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.0031917Z               "line": 1502
2026-07-26T22:33:03.0032189Z             },
2026-07-26T22:33:03.0032653Z             {
2026-07-26T22:33:03.0032850Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.0033116Z               "line": 2193
2026-07-26T22:33:03.0033297Z             }
2026-07-26T22:33:03.0033459Z           ]
2026-07-26T22:33:03.0033617Z         },
2026-07-26T22:33:03.0033778Z         "int": {
2026-07-26T22:33:03.0033960Z           "complete": true,
2026-07-26T22:33:03.0034145Z           "evidence": [
2026-07-26T22:33:03.0034327Z             {
2026-07-26T22:33:03.0034533Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-07-26T22:33:03.0034789Z               "line": 432
2026-07-26T22:33:03.0034975Z             }
2026-07-26T22:33:03.0035138Z           ]
2026-07-26T22:33:03.0035304Z         },
2026-07-26T22:33:03.0035462Z         "unit": {
2026-07-26T22:33:03.0035642Z           "complete": true,
2026-07-26T22:33:03.0035956Z           "evidence": [
2026-07-26T22:33:03.0036148Z             {
2026-07-26T22:33:03.0036328Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.0036567Z               "line": 2688
2026-07-26T22:33:03.0036748Z             },
2026-07-26T22:33:03.0036920Z             {
2026-07-26T22:33:03.0037102Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.0037319Z               "line": 2712
2026-07-26T22:33:03.0037506Z             }
2026-07-26T22:33:03.0037668Z           ]
2026-07-26T22:33:03.0037830Z         }
2026-07-26T22:33:03.0037986Z       }
2026-07-26T22:33:03.0038138Z     },
2026-07-26T22:33:03.0038299Z     {
2026-07-26T22:33:03.0038491Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-07-26T22:33:03.0042292Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-07-26T22:33:03.0046108Z       "requiredStages": [
2026-07-26T22:33:03.0046306Z         "impl",
2026-07-26T22:33:03.0046465Z         "unit",
2026-07-26T22:33:03.0046635Z         "int"
2026-07-26T22:33:03.0046798Z       ],
2026-07-26T22:33:03.0046960Z       "stages": {
2026-07-26T22:33:03.0047123Z         "doc": {
2026-07-26T22:33:03.0047299Z           "complete": false,
2026-07-26T22:33:03.0047508Z           "evidence": []
2026-07-26T22:33:03.0047695Z         },
2026-07-26T22:33:03.0047861Z         "impl": {
2026-07-26T22:33:03.0048043Z           "complete": true,
2026-07-26T22:33:03.0048228Z           "evidence": [
2026-07-26T22:33:03.0048404Z             {
2026-07-26T22:33:03.0048585Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0048816Z               "line": 2724
2026-07-26T22:33:03.0049088Z             },
2026-07-26T22:33:03.0049255Z             {
2026-07-26T22:33:03.0049450Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0049679Z               "line": 2745
2026-07-26T22:33:03.0049966Z             }
2026-07-26T22:33:03.0050127Z           ]
2026-07-26T22:33:03.0050294Z         },
2026-07-26T22:33:03.0050456Z         "int": {
2026-07-26T22:33:03.0050633Z           "complete": true,
2026-07-26T22:33:03.0050830Z           "evidence": [
2026-07-26T22:33:03.0051014Z             {
2026-07-26T22:33:03.0051216Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-07-26T22:33:03.0051481Z               "line": 350
2026-07-26T22:33:03.0051664Z             }
2026-07-26T22:33:03.0051822Z           ]
2026-07-26T22:33:03.0051979Z         },
2026-07-26T22:33:03.0052142Z         "unit": {
2026-07-26T22:33:03.0052322Z           "complete": true,
2026-07-26T22:33:03.0052518Z           "evidence": [
2026-07-26T22:33:03.0052704Z             {
2026-07-26T22:33:03.0052889Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0053218Z               "line": 15712
2026-07-26T22:33:03.0053406Z             }
2026-07-26T22:33:03.0053561Z           ]
2026-07-26T22:33:03.0053725Z         }
2026-07-26T22:33:03.0053881Z       }
2026-07-26T22:33:03.0054028Z     },
2026-07-26T22:33:03.0054174Z     {
2026-07-26T22:33:03.0054355Z       "id": "REQ-HAZARD-RC-ATTACH-TRUTH",
2026-07-26T22:33:03.0056539Z       "title": "RC-RENDER-TRUTH W1 (KNOWN-HAZARDS 7.46 — umbrella conformance seam for ADR-0042): an rc surface answers from live session authority, never a stale persisted projection; a resuming perch is UNBOUND, not offline. Regression matrix from the hertz RCAs + operator field recovery: offline-row-over-honest-session attaches; offline-no-session refuses; zombie refuses/reaps never attaches; resume-never-bound reads UNBOUND and is attachable; harness-only refuses truthfully pre-stream; qualified targets attach with bare wire id. HEAVY nextest group at birth for any leg spawning a daemon tree (standing CI lint). Gate: int — the matrix; doc — KNOWN-HAZARDS 7.46.",
2026-07-26T22:33:03.0058364Z       "requiredStages": [
2026-07-26T22:33:03.0058556Z         "doc",
2026-07-26T22:33:03.0058736Z         "int"
2026-07-26T22:33:03.0058899Z       ],
2026-07-26T22:33:03.0059126Z       "stages": {
2026-07-26T22:33:03.0059300Z         "doc": {
2026-07-26T22:33:03.0059476Z           "complete": true,
2026-07-26T22:33:03.0059677Z           "evidence": [
2026-07-26T22:33:03.0059854Z             {
2026-07-26T22:33:03.0060043Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0060277Z               "line": 713
2026-07-26T22:33:03.0060464Z             }
2026-07-26T22:33:03.0060621Z           ]
2026-07-26T22:33:03.0060784Z         },
2026-07-26T22:33:03.0060950Z         "impl": {
2026-07-26T22:33:03.0061132Z           "complete": false,
2026-07-26T22:33:03.0063627Z           "evidence": []
2026-07-26T22:33:03.0063817Z         },
2026-07-26T22:33:03.0063985Z         "int": {
2026-07-26T22:33:03.0064165Z           "complete": true,
2026-07-26T22:33:03.0064376Z           "evidence": [
2026-07-26T22:33:03.0064559Z             {
2026-07-26T22:33:03.0064749Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.0064978Z               "line": 3128
2026-07-26T22:33:03.0065172Z             },
2026-07-26T22:33:03.0065339Z             {
2026-07-26T22:33:03.0065535Z               "path": "crates/spt/tests/rc_attach_truth.rs",
2026-07-26T22:33:03.0065792Z               "line": 278
2026-07-26T22:33:03.0065974Z             },
2026-07-26T22:33:03.0066150Z             {
2026-07-26T22:33:03.0066346Z               "path": "crates/spt/tests/rc_attach_truth.rs",
2026-07-26T22:33:03.0066599Z               "line": 341
2026-07-26T22:33:03.0066780Z             },
2026-07-26T22:33:03.0066942Z             {
2026-07-26T22:33:03.0067134Z               "path": "crates/spt/tests/rc_attach_truth.rs",
2026-07-26T22:33:03.0067379Z               "line": 376
2026-07-26T22:33:03.0067556Z             },
2026-07-26T22:33:03.0067713Z             {
2026-07-26T22:33:03.0067919Z               "path": "crates/spt/tests/rc_attach_truth.rs",
2026-07-26T22:33:03.0068162Z               "line": 438
2026-07-26T22:33:03.0068342Z             },
2026-07-26T22:33:03.0068605Z             {
2026-07-26T22:33:03.0068792Z               "path": "crates/spt/tests/rc_attach_truth.rs",
2026-07-26T22:33:03.0069121Z               "line": 510
2026-07-26T22:33:03.0069305Z             }
2026-07-26T22:33:03.0069487Z           ]
2026-07-26T22:33:03.0069643Z         },
2026-07-26T22:33:03.0069804Z         "unit": {
2026-07-26T22:33:03.0069988Z           "complete": false,
2026-07-26T22:33:03.0070184Z           "evidence": []
2026-07-26T22:33:03.0070366Z         }
2026-07-26T22:33:03.0070523Z       }
2026-07-26T22:33:03.0070681Z     },
2026-07-26T22:33:03.0070837Z     {
2026-07-26T22:33:03.0071006Z       "id": "REQ-HAZARD-RC-EOF",
2026-07-26T22:33:03.0075010Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-07-26T22:33:03.0078708Z       "requiredStages": [
2026-07-26T22:33:03.0078892Z         "impl",
2026-07-26T22:33:03.0079136Z         "unit"
2026-07-26T22:33:03.0079299Z       ],
2026-07-26T22:33:03.0079460Z       "stages": {
2026-07-26T22:33:03.0079628Z         "doc": {
2026-07-26T22:33:03.0079813Z           "complete": false,
2026-07-26T22:33:03.0080015Z           "evidence": []
2026-07-26T22:33:03.0080203Z         },
2026-07-26T22:33:03.0080365Z         "impl": {
2026-07-26T22:33:03.0080543Z           "complete": true,
2026-07-26T22:33:03.0080726Z           "evidence": [
2026-07-26T22:33:03.0080921Z             {
2026-07-26T22:33:03.0081106Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.0081350Z               "line": 2216
2026-07-26T22:33:03.0081537Z             }
2026-07-26T22:33:03.0081703Z           ]
2026-07-26T22:33:03.0081865Z         },
2026-07-26T22:33:03.0082032Z         "int": {
2026-07-26T22:33:03.0082205Z           "complete": false,
2026-07-26T22:33:03.0082418Z           "evidence": []
2026-07-26T22:33:03.0082604Z         },
2026-07-26T22:33:03.0082762Z         "unit": {
2026-07-26T22:33:03.0082943Z           "complete": true,
2026-07-26T22:33:03.0083137Z           "evidence": [
2026-07-26T22:33:03.0083321Z             {
2026-07-26T22:33:03.0083502Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.0083754Z               "line": 3599
2026-07-26T22:33:03.0083950Z             }
2026-07-26T22:33:03.0084113Z           ]
2026-07-26T22:33:03.0084270Z         }
2026-07-26T22:33:03.0084432Z       }
2026-07-26T22:33:03.0084594Z     },
2026-07-26T22:33:03.0084757Z     {
2026-07-26T22:33:03.0084956Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-07-26T22:33:03.0089767Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-07-26T22:33:03.0094058Z       "requiredStages": [
2026-07-26T22:33:03.0094243Z         "impl",
2026-07-26T22:33:03.0094406Z         "unit"
2026-07-26T22:33:03.0094567Z       ],
2026-07-26T22:33:03.0094730Z       "stages": {
2026-07-26T22:33:03.0094896Z         "doc": {
2026-07-26T22:33:03.0095064Z           "complete": false,
2026-07-26T22:33:03.0095273Z           "evidence": []
2026-07-26T22:33:03.0095454Z         },
2026-07-26T22:33:03.0095622Z         "impl": {
2026-07-26T22:33:03.0095797Z           "complete": true,
2026-07-26T22:33:03.0095995Z           "evidence": [
2026-07-26T22:33:03.0096178Z             {
2026-07-26T22:33:03.0096359Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.0096591Z               "line": 524
2026-07-26T22:33:03.0096786Z             }
2026-07-26T22:33:03.0096944Z           ]
2026-07-26T22:33:03.0097110Z         },
2026-07-26T22:33:03.0097273Z         "int": {
2026-07-26T22:33:03.0097444Z           "complete": false,
2026-07-26T22:33:03.0097635Z           "evidence": []
2026-07-26T22:33:03.0097821Z         },
2026-07-26T22:33:03.0097983Z         "unit": {
2026-07-26T22:33:03.0098150Z           "complete": true,
2026-07-26T22:33:03.0098345Z           "evidence": [
2026-07-26T22:33:03.0098509Z             {
2026-07-26T22:33:03.0098688Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.0098914Z               "line": 2710
2026-07-26T22:33:03.0099179Z             },
2026-07-26T22:33:03.0099341Z             {
2026-07-26T22:33:03.0099523Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.0099756Z               "line": 3712
2026-07-26T22:33:03.0099943Z             },
2026-07-26T22:33:03.0100109Z             {
2026-07-26T22:33:03.0100290Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.0100538Z               "line": 3714
2026-07-26T22:33:03.0100719Z             }
2026-07-26T22:33:03.0100890Z           ]
2026-07-26T22:33:03.0101048Z         }
2026-07-26T22:33:03.0101205Z       }
2026-07-26T22:33:03.0101356Z     },
2026-07-26T22:33:03.0101509Z     {
2026-07-26T22:33:03.0101698Z       "id": "REQ-HAZARD-REDISPATCH-CONTROL-STEAL",
2026-07-26T22:33:03.0105080Z       "title": "REDISPATCH-TRUTH W1 (KNOWN-HAZARDS 7.41, hertz field RCA 2026-07-16 — 4/5 endpoints frozen per brain cycle): a fresh dispatcher must NEVER re-serve a terminal stream — a replayed historical Attach must not steal (same-identity silent become_controller, no Displaced) or clear (replayed-EOF detach_session) a LIVE controller. The legitimate same-by successor re-take after a brain restart still silently re-takes: the discriminator is stream LIFECYCLE, never origin identity. Gate: int — production-path regression D1: finished historical Attach + current active Attach, same endpoint/origin; restart target brain only (real run_dispatch_loop rediscovery, NO manual re-serve — the pre-fix e2e bypass is the lesson); prove the historical stream neither takes nor clears the current controller and current input/output stays exactly-once without detach; doc — KNOWN-HAZARDS 7.41. HEAVY nextest group at birth (FLAKE-LEDGER #15). Kin REQ-REDISPATCH-FINISHED-RETIRE (the mechanism), REQ-BRAIN-RESUME-NO-CONTROL-STEAL (the CLOSED session-cursor sibling — different leg), ADR-0038.",
2026-07-26T22:33:03.0108219Z       "requiredStages": [
2026-07-26T22:33:03.0108415Z         "doc",
2026-07-26T22:33:03.0108586Z         "int"
2026-07-26T22:33:03.0108759Z       ],
2026-07-26T22:33:03.0108924Z       "stages": {
2026-07-26T22:33:03.0109191Z         "doc": {
2026-07-26T22:33:03.0109374Z           "complete": true,
2026-07-26T22:33:03.0109577Z           "evidence": [
2026-07-26T22:33:03.0109863Z             {
2026-07-26T22:33:03.0110049Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0110291Z               "line": 674
2026-07-26T22:33:03.0110478Z             }
2026-07-26T22:33:03.0110649Z           ]
2026-07-26T22:33:03.0110812Z         },
2026-07-26T22:33:03.0110979Z         "impl": {
2026-07-26T22:33:03.0111160Z           "complete": true,
2026-07-26T22:33:03.0111366Z           "evidence": [
2026-07-26T22:33:03.0111546Z             {
2026-07-26T22:33:03.0111751Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.0111998Z               "line": 428
2026-07-26T22:33:03.0112182Z             }
2026-07-26T22:33:03.0112345Z           ]
2026-07-26T22:33:03.0112515Z         },
2026-07-26T22:33:03.0112726Z         "int": {
2026-07-26T22:33:03.0112921Z           "complete": true,
2026-07-26T22:33:03.0113116Z           "evidence": [
2026-07-26T22:33:03.0113303Z             {
2026-07-26T22:33:03.0113512Z               "path": "crates/spt-daemon/tests/redispatch.rs",
2026-07-26T22:33:03.0113783Z               "line": 212
2026-07-26T22:33:03.0113970Z             },
2026-07-26T22:33:03.0114127Z             {
2026-07-26T22:33:03.0114336Z               "path": "crates/spt-daemon/tests/redispatch.rs",
2026-07-26T22:33:03.0114591Z               "line": 303
2026-07-26T22:33:03.0114774Z             }
2026-07-26T22:33:03.0114941Z           ]
2026-07-26T22:33:03.0115101Z         },
2026-07-26T22:33:03.0115269Z         "unit": {
2026-07-26T22:33:03.0115444Z           "complete": false,
2026-07-26T22:33:03.0115640Z           "evidence": []
2026-07-26T22:33:03.0115827Z         }
2026-07-26T22:33:03.0115992Z       }
2026-07-26T22:33:03.0116151Z     },
2026-07-26T22:33:03.0116312Z     {
2026-07-26T22:33:03.0116509Z       "id": "REQ-HAZARD-REDISPATCH-STALL",
2026-07-26T22:33:03.0120381Z       "title": "REDISPATCH-STALL W1 (KNOWN-HAZARDS 7.43, hertz v0.34 field RCA 2026-07-16 — recurrent 20-30s PTY/RC freezes, 17-62s DISPATCH tails): one wedged stream subscriber must NEVER stall stream serving, and recovery machinery must not manufacture new replay victims. Today: claim retries x the broad Err(_) opener fallback (dispatch.rs:414) install throwaway peek subscribers whose StreamLog::attach replays the entire retained ring UNDER the per-stream mutex with discarded write errors and the poisoned subscriber left installed — serial 15s bounded-write poison windows (33 observed, all 15,000-15,154ms) composing into the field stalls. Gate: int — production-path regression at the REAL run_dispatch_loop + StreamLog + serve_attach seams: wedge one subscriber conn, prove producer appends and unrelated streams stay flat while the poisoned subscriber is removed and the stream recovers (no abandonment); doc — KNOWN-HAZARDS 7.43. Binding: redispatch D1/D1b stay green every leg. HEAVY nextest group at birth. Kin REQ-STREAMLOG-SUBSCRIBER-DISCIPLINE + REQ-DISPATCH-FALLBACK-CIRCUIT (the mechanisms), REQ-HAZARD-SHAREDSEND-NO-BLOCKING-WRITE-UNDER-LOCK (the deadline that fires), ADR-0038 Amendment.",
2026-07-26T22:33:03.0123743Z       "requiredStages": [
2026-07-26T22:33:03.0123953Z         "doc",
2026-07-26T22:33:03.0124121Z         "int"
2026-07-26T22:33:03.0124401Z       ],
2026-07-26T22:33:03.0124568Z       "stages": {
2026-07-26T22:33:03.0124736Z         "doc": {
2026-07-26T22:33:03.0124915Z           "complete": true,
2026-07-26T22:33:03.0125118Z           "evidence": [
2026-07-26T22:33:03.0125301Z             {
2026-07-26T22:33:03.0125496Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0125728Z               "line": 692
2026-07-26T22:33:03.0125918Z             },
2026-07-26T22:33:03.0126077Z             {
2026-07-26T22:33:03.0126290Z               "path": "docs/REDISPATCH-STALL-TRIAGE.md",
2026-07-26T22:33:03.0126548Z               "line": 3
2026-07-26T22:33:03.0126749Z             }
2026-07-26T22:33:03.0126910Z           ]
2026-07-26T22:33:03.0127120Z         },
2026-07-26T22:33:03.0127308Z         "impl": {
2026-07-26T22:33:03.0127487Z           "complete": false,
2026-07-26T22:33:03.0127792Z           "evidence": []
2026-07-26T22:33:03.0127982Z         },
2026-07-26T22:33:03.0128142Z         "int": {
2026-07-26T22:33:03.0128338Z           "complete": true,
2026-07-26T22:33:03.0128528Z           "evidence": [
2026-07-26T22:33:03.0128705Z             {
2026-07-26T22:33:03.0128930Z               "path": "crates/spt-daemon/tests/redispatch_stall.rs",
2026-07-26T22:33:03.0129301Z               "line": 309
2026-07-26T22:33:03.0129491Z             }
2026-07-26T22:33:03.0129659Z           ]
2026-07-26T22:33:03.0129820Z         },
2026-07-26T22:33:03.0129987Z         "unit": {
2026-07-26T22:33:03.0130170Z           "complete": false,
2026-07-26T22:33:03.0130369Z           "evidence": []
2026-07-26T22:33:03.0130561Z         }
2026-07-26T22:33:03.0130712Z       }
2026-07-26T22:33:03.0130869Z     },
2026-07-26T22:33:03.0131031Z     {
2026-07-26T22:33:03.0131213Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-07-26T22:33:03.0131623Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-07-26T22:33:03.0132018Z       "requiredStages": [
2026-07-26T22:33:03.0132218Z         "impl",
2026-07-26T22:33:03.0132390Z         "unit"
2026-07-26T22:33:03.0132547Z       ],
2026-07-26T22:33:03.0132705Z       "stages": {
2026-07-26T22:33:03.0132871Z         "doc": {
2026-07-26T22:33:03.0133061Z           "complete": true,
2026-07-26T22:33:03.0133264Z           "evidence": [
2026-07-26T22:33:03.0133445Z             {
2026-07-26T22:33:03.0133640Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0133884Z               "line": 146
2026-07-26T22:33:03.0138292Z             }
2026-07-26T22:33:03.0138490Z           ]
2026-07-26T22:33:03.0138660Z         },
2026-07-26T22:33:03.0138831Z         "impl": {
2026-07-26T22:33:03.0139022Z           "complete": true,
2026-07-26T22:33:03.0139112Z           "evidence": [
2026-07-26T22:33:03.0139199Z             {
2026-07-26T22:33:03.0139318Z               "path": "crates/spt-store/src/db.rs",
2026-07-26T22:33:03.0139426Z               "line": 29
2026-07-26T22:33:03.0139509Z             },
2026-07-26T22:33:03.0139594Z             {
2026-07-26T22:33:03.0139713Z               "path": "crates/spt-store/src/db.rs",
2026-07-26T22:33:03.0139805Z               "line": 67
2026-07-26T22:33:03.0139890Z             },
2026-07-26T22:33:03.0139975Z             {
2026-07-26T22:33:03.0140100Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.0140191Z               "line": 183
2026-07-26T22:33:03.0140272Z             },
2026-07-26T22:33:03.0140357Z             {
2026-07-26T22:33:03.0140477Z               "path": "crates/spt-store/src/registry.rs",
2026-07-26T22:33:03.0140566Z               "line": 30
2026-07-26T22:33:03.0140652Z             },
2026-07-26T22:33:03.0140730Z             {
2026-07-26T22:33:03.0140835Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.0140914Z               "line": 99
2026-07-26T22:33:03.0140991Z             }
2026-07-26T22:33:03.0141073Z           ]
2026-07-26T22:33:03.0141163Z         },
2026-07-26T22:33:03.0141243Z         "int": {
2026-07-26T22:33:03.0141342Z           "complete": false,
2026-07-26T22:33:03.0141577Z           "evidence": []
2026-07-26T22:33:03.0141662Z         },
2026-07-26T22:33:03.0141739Z         "unit": {
2026-07-26T22:33:03.0141830Z           "complete": true,
2026-07-26T22:33:03.0141915Z           "evidence": [
2026-07-26T22:33:03.0142001Z             {
2026-07-26T22:33:03.0142120Z               "path": "crates/spt-store/src/registry.rs",
2026-07-26T22:33:03.0142206Z               "line": 162
2026-07-26T22:33:03.0142287Z             }
2026-07-26T22:33:03.0142374Z           ]
2026-07-26T22:33:03.0142454Z         }
2026-07-26T22:33:03.0142535Z       }
2026-07-26T22:33:03.0142615Z     },
2026-07-26T22:33:03.0142698Z     {
2026-07-26T22:33:03.0142816Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-07-26T22:33:03.0143241Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-07-26T22:33:03.0143450Z       "requiredStages": [
2026-07-26T22:33:03.0143535Z         "doc",
2026-07-26T22:33:03.0143621Z         "impl",
2026-07-26T22:33:03.0143707Z         "unit"
2026-07-26T22:33:03.0143795Z       ],
2026-07-26T22:33:03.0143876Z       "stages": {
2026-07-26T22:33:03.0143957Z         "doc": {
2026-07-26T22:33:03.0144054Z           "complete": true,
2026-07-26T22:33:03.0144139Z           "evidence": [
2026-07-26T22:33:03.0144219Z             {
2026-07-26T22:33:03.0144320Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0144415Z               "line": 158
2026-07-26T22:33:03.0144501Z             }
2026-07-26T22:33:03.0144582Z           ]
2026-07-26T22:33:03.0144659Z         },
2026-07-26T22:33:03.0144749Z         "impl": {
2026-07-26T22:33:03.0144843Z           "complete": true,
2026-07-26T22:33:03.0144936Z           "evidence": [
2026-07-26T22:33:03.0145021Z             {
2026-07-26T22:33:03.0145144Z               "path": "crates/spt-store/src/registry.rs",
2026-07-26T22:33:03.0145241Z               "line": 22
2026-07-26T22:33:03.0145331Z             }
2026-07-26T22:33:03.0145407Z           ]
2026-07-26T22:33:03.0145502Z         },
2026-07-26T22:33:03.0145589Z         "int": {
2026-07-26T22:33:03.0145688Z           "complete": false,
2026-07-26T22:33:03.0145779Z           "evidence": []
2026-07-26T22:33:03.0145871Z         },
2026-07-26T22:33:03.0145956Z         "unit": {
2026-07-26T22:33:03.0146055Z           "complete": true,
2026-07-26T22:33:03.0146147Z           "evidence": [
2026-07-26T22:33:03.0146224Z             {
2026-07-26T22:33:03.0146341Z               "path": "crates/spt-store/src/registry.rs",
2026-07-26T22:33:03.0146426Z               "line": 298
2026-07-26T22:33:03.0146512Z             }
2026-07-26T22:33:03.0146588Z           ]
2026-07-26T22:33:03.0146672Z         }
2026-07-26T22:33:03.0146757Z       }
2026-07-26T22:33:03.0146839Z     },
2026-07-26T22:33:03.0146921Z     {
2026-07-26T22:33:03.0147048Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-07-26T22:33:03.0147507Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-07-26T22:33:03.0147617Z       "requiredStages": [
2026-07-26T22:33:03.0147696Z         "impl",
2026-07-26T22:33:03.0147778Z         "unit"
2026-07-26T22:33:03.0147860Z       ],
2026-07-26T22:33:03.0147950Z       "stages": {
2026-07-26T22:33:03.0148026Z         "doc": {
2026-07-26T22:33:03.0148127Z           "complete": true,
2026-07-26T22:33:03.0148222Z           "evidence": [
2026-07-26T22:33:03.0148303Z             {
2026-07-26T22:33:03.0148408Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0148499Z               "line": 152
2026-07-26T22:33:03.0148583Z             }
2026-07-26T22:33:03.0148670Z           ]
2026-07-26T22:33:03.0148743Z         },
2026-07-26T22:33:03.0148833Z         "impl": {
2026-07-26T22:33:03.0148917Z           "complete": true,
2026-07-26T22:33:03.0149098Z           "evidence": [
2026-07-26T22:33:03.0149178Z             {
2026-07-26T22:33:03.0149319Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-07-26T22:33:03.0149507Z               "line": 294
2026-07-26T22:33:03.0149582Z             },
2026-07-26T22:33:03.0149667Z             {
2026-07-26T22:33:03.0149788Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0149869Z               "line": 221
2026-07-26T22:33:03.0149944Z             },
2026-07-26T22:33:03.0150021Z             {
2026-07-26T22:33:03.0150145Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0150230Z               "line": 458
2026-07-26T22:33:03.0150311Z             },
2026-07-26T22:33:03.0150389Z             {
2026-07-26T22:33:03.0150507Z               "path": "crates/spt-store/src/epoch.rs",
2026-07-26T22:33:03.0150588Z               "line": 20
2026-07-26T22:33:03.0150675Z             }
2026-07-26T22:33:03.0150751Z           ]
2026-07-26T22:33:03.0150837Z         },
2026-07-26T22:33:03.0151037Z         "int": {
2026-07-26T22:33:03.0151131Z           "complete": false,
2026-07-26T22:33:03.0151217Z           "evidence": []
2026-07-26T22:33:03.0151314Z         },
2026-07-26T22:33:03.0151395Z         "unit": {
2026-07-26T22:33:03.0151494Z           "complete": true,
2026-07-26T22:33:03.0151576Z           "evidence": [
2026-07-26T22:33:03.0151653Z             {
2026-07-26T22:33:03.0151779Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0151870Z               "line": 1427
2026-07-26T22:33:03.0151946Z             },
2026-07-26T22:33:03.0152032Z             {
2026-07-26T22:33:03.0152151Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-07-26T22:33:03.0152236Z               "line": 89
2026-07-26T22:33:03.0152319Z             },
2026-07-26T22:33:03.0152395Z             {
2026-07-26T22:33:03.0152523Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0152610Z               "line": 1288
2026-07-26T22:33:03.0152704Z             },
2026-07-26T22:33:03.0152780Z             {
2026-07-26T22:33:03.0152905Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0153005Z               "line": 1307
2026-07-26T22:33:03.0153086Z             },
2026-07-26T22:33:03.0153167Z             {
2026-07-26T22:33:03.0153301Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-07-26T22:33:03.0153381Z               "line": 290
2026-07-26T22:33:03.0153472Z             },
2026-07-26T22:33:03.0153544Z             {
2026-07-26T22:33:03.0153653Z               "path": "crates/spt-store/src/epoch.rs",
2026-07-26T22:33:03.0153734Z               "line": 82
2026-07-26T22:33:03.0153820Z             },
2026-07-26T22:33:03.0153898Z             {
2026-07-26T22:33:03.0154015Z               "path": "crates/spt-store/src/epoch.rs",
2026-07-26T22:33:03.0154100Z               "line": 99
2026-07-26T22:33:03.0154186Z             },
2026-07-26T22:33:03.0154267Z             {
2026-07-26T22:33:03.0154384Z               "path": "crates/spt-store/src/epoch.rs",
2026-07-26T22:33:03.0154474Z               "line": 119
2026-07-26T22:33:03.0154551Z             }
2026-07-26T22:33:03.0154633Z           ]
2026-07-26T22:33:03.0154713Z         }
2026-07-26T22:33:03.0154794Z       }
2026-07-26T22:33:03.0154871Z     },
2026-07-26T22:33:03.0154952Z     {
2026-07-26T22:33:03.0155075Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-07-26T22:33:03.0158191Z       "title": "Registry rows must decay (no immortal rows) via TWO triggers: (a) NODE-SILENCE — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window, so a vanished node's rows stop poisoning bare-id resolution with phantom AcrossNodes ambiguity; AND (b) per-row OFFLINE-TTL — evict rows that have been non-routable (Offline) beyond the per-row grace even while the author node is alive, because purge/erase leaves an immortal Offline row otherwise (ghost-heal re-advertises Offline ONCE with a fresh epoch, and whole-node eviction never fires for a still-alive author) so Offline ghost rows accumulate unbounded on a remote viewer under purge/erase churn (#2-secondary). Both keyed on RECEIVER-observed state (heard-map recency / a sticky receiver-observed offline_since, NOT the gossip epoch — an epoch-keyed clock would be reset by ghost-heal's fresh-epoch re-advertise); own rows never decay; a revived/re-flapped row re-inserts (or clears its offline_since) from its durable epoch within one pump cadence (4.10)",
2026-07-26T22:33:03.0158368Z       "requiredStages": [
2026-07-26T22:33:03.0158458Z         "doc",
2026-07-26T22:33:03.0158548Z         "impl",
2026-07-26T22:33:03.0158639Z         "unit"
2026-07-26T22:33:03.0158711Z       ],
2026-07-26T22:33:03.0158806Z       "stages": {
2026-07-26T22:33:03.0158891Z         "doc": {
2026-07-26T22:33:03.0159064Z           "complete": true,
2026-07-26T22:33:03.0159148Z           "evidence": [
2026-07-26T22:33:03.0159230Z             {
2026-07-26T22:33:03.0159345Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0159534Z               "line": 164
2026-07-26T22:33:03.0159620Z             }
2026-07-26T22:33:03.0159701Z           ]
2026-07-26T22:33:03.0159794Z         },
2026-07-26T22:33:03.0159884Z         "impl": {
2026-07-26T22:33:03.0159980Z           "complete": true,
2026-07-26T22:33:03.0160067Z           "evidence": [
2026-07-26T22:33:03.0160142Z             {
2026-07-26T22:33:03.0160286Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-07-26T22:33:03.0160381Z               "line": 137
2026-07-26T22:33:03.0160466Z             },
2026-07-26T22:33:03.0160552Z             {
2026-07-26T22:33:03.0160672Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-07-26T22:33:03.0160767Z               "line": 146
2026-07-26T22:33:03.0160842Z             },
2026-07-26T22:33:03.0160920Z             {
2026-07-26T22:33:03.0161043Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0161138Z               "line": 744
2026-07-26T22:33:03.0161230Z             },
2026-07-26T22:33:03.0161316Z             {
2026-07-26T22:33:03.0161434Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0161520Z               "line": 751
2026-07-26T22:33:03.0161597Z             },
2026-07-26T22:33:03.0161677Z             {
2026-07-26T22:33:03.0161801Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0161893Z               "line": 788
2026-07-26T22:33:03.0161969Z             },
2026-07-26T22:33:03.0162054Z             {
2026-07-26T22:33:03.0162175Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0162270Z               "line": 795
2026-07-26T22:33:03.0162354Z             },
2026-07-26T22:33:03.0162444Z             {
2026-07-26T22:33:03.0162569Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0162664Z               "line": 325
2026-07-26T22:33:03.0162744Z             },
2026-07-26T22:33:03.0162816Z             {
2026-07-26T22:33:03.0162940Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0163035Z               "line": 368
2026-07-26T22:33:03.0163111Z             }
2026-07-26T22:33:03.0163194Z           ]
2026-07-26T22:33:03.0163274Z         },
2026-07-26T22:33:03.0163349Z         "int": {
2026-07-26T22:33:03.0163446Z           "complete": false,
2026-07-26T22:33:03.0163542Z           "evidence": []
2026-07-26T22:33:03.0163617Z         },
2026-07-26T22:33:03.0163707Z         "unit": {
2026-07-26T22:33:03.0163799Z           "complete": true,
2026-07-26T22:33:03.0163894Z           "evidence": [
2026-07-26T22:33:03.0163984Z             {
2026-07-26T22:33:03.0164104Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0164227Z               "line": 2333
2026-07-26T22:33:03.0164304Z             },
2026-07-26T22:33:03.0164389Z             {
2026-07-26T22:33:03.0164510Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0164594Z               "line": 2398
2026-07-26T22:33:03.0164679Z             },
2026-07-26T22:33:03.0164765Z             {
2026-07-26T22:33:03.0164887Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0165077Z               "line": 2437
2026-07-26T22:33:03.0165159Z             },
2026-07-26T22:33:03.0165244Z             {
2026-07-26T22:33:03.0165364Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0165455Z               "line": 1320
2026-07-26T22:33:03.0165526Z             },
2026-07-26T22:33:03.0165616Z             {
2026-07-26T22:33:03.0165722Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0165822Z               "line": 1366
2026-07-26T22:33:03.0165907Z             },
2026-07-26T22:33:03.0165993Z             {
2026-07-26T22:33:03.0166098Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0166184Z               "line": 1396
2026-07-26T22:33:03.0166265Z             },
2026-07-26T22:33:03.0166351Z             {
2026-07-26T22:33:03.0166661Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0166756Z               "line": 1426
2026-07-26T22:33:03.0166851Z             },
2026-07-26T22:33:03.0166937Z             {
2026-07-26T22:33:03.0167053Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0167151Z               "line": 1460
2026-07-26T22:33:03.0167238Z             }
2026-07-26T22:33:03.0167354Z           ]
2026-07-26T22:33:03.0167433Z         }
2026-07-26T22:33:03.0167523Z       }
2026-07-26T22:33:03.0167599Z     },
2026-07-26T22:33:03.0167680Z     {
2026-07-26T22:33:03.0167792Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-07-26T22:33:03.0167983Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-07-26T22:33:03.0168084Z       "requiredStages": [
2026-07-26T22:33:03.0168164Z         "impl",
2026-07-26T22:33:03.0168245Z         "unit"
2026-07-26T22:33:03.0168322Z       ],
2026-07-26T22:33:03.0168408Z       "stages": {
2026-07-26T22:33:03.0168493Z         "doc": {
2026-07-26T22:33:03.0168589Z           "complete": false,
2026-07-26T22:33:03.0168670Z           "evidence": []
2026-07-26T22:33:03.0168765Z         },
2026-07-26T22:33:03.0168855Z         "impl": {
2026-07-26T22:33:03.0169027Z           "complete": true,
2026-07-26T22:33:03.0169108Z           "evidence": [
2026-07-26T22:33:03.0169189Z             {
2026-07-26T22:33:03.0169295Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.0169380Z               "line": 31
2026-07-26T22:33:03.0169461Z             },
2026-07-26T22:33:03.0169538Z             {
2026-07-26T22:33:03.0169657Z               "path": "crates/spt-store/src/registry.rs",
2026-07-26T22:33:03.0169747Z               "line": 55
2026-07-26T22:33:03.0169829Z             },
2026-07-26T22:33:03.0169910Z             {
2026-07-26T22:33:03.0170028Z               "path": "crates/spt-store/src/registry.rs",
2026-07-26T22:33:03.0170118Z               "line": 66
2026-07-26T22:33:03.0170199Z             },
2026-07-26T22:33:03.0170284Z             {
2026-07-26T22:33:03.0170397Z               "path": "crates/spt-store/src/registry.rs",
2026-07-26T22:33:03.0170487Z               "line": 115
2026-07-26T22:33:03.0170569Z             },
2026-07-26T22:33:03.0170651Z             {
2026-07-26T22:33:03.0170764Z               "path": "crates/spt-store/src/registry.rs",
2026-07-26T22:33:03.0170860Z               "line": 138
2026-07-26T22:33:03.0170936Z             }
2026-07-26T22:33:03.0171026Z           ]
2026-07-26T22:33:03.0171107Z         },
2026-07-26T22:33:03.0171194Z         "int": {
2026-07-26T22:33:03.0171289Z           "complete": false,
2026-07-26T22:33:03.0171383Z           "evidence": []
2026-07-26T22:33:03.0171456Z         },
2026-07-26T22:33:03.0171551Z         "unit": {
2026-07-26T22:33:03.0171632Z           "complete": true,
2026-07-26T22:33:03.0171727Z           "evidence": [
2026-07-26T22:33:03.0171809Z             {
2026-07-26T22:33:03.0171923Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.0172009Z               "line": 807
2026-07-26T22:33:03.0172085Z             },
2026-07-26T22:33:03.0172167Z             {
2026-07-26T22:33:03.0172391Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.0172482Z               "line": 813
2026-07-26T22:33:03.0172566Z             },
2026-07-26T22:33:03.0172643Z             {
2026-07-26T22:33:03.0172759Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.0172853Z               "line": 827
2026-07-26T22:33:03.0172937Z             },
2026-07-26T22:33:03.0173023Z             {
2026-07-26T22:33:03.0173129Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.0173210Z               "line": 836
2026-07-26T22:33:03.0173290Z             },
2026-07-26T22:33:03.0173366Z             {
2026-07-26T22:33:03.0173486Z               "path": "crates/spt-store/src/registry.rs",
2026-07-26T22:33:03.0173567Z               "line": 195
2026-07-26T22:33:03.0173648Z             },
2026-07-26T22:33:03.0173829Z             {
2026-07-26T22:33:03.0173943Z               "path": "crates/spt-store/src/registry.rs",
2026-07-26T22:33:03.0174040Z               "line": 208
2026-07-26T22:33:03.0174130Z             },
2026-07-26T22:33:03.0174206Z             {
2026-07-26T22:33:03.0174325Z               "path": "crates/spt-store/src/registry.rs",
2026-07-26T22:33:03.0174426Z               "line": 271
2026-07-26T22:33:03.0174511Z             },
2026-07-26T22:33:03.0174592Z             {
2026-07-26T22:33:03.0174693Z               "path": "crates/spt-store/src/registry.rs",
2026-07-26T22:33:03.0174778Z               "line": 290
2026-07-26T22:33:03.0174854Z             },
2026-07-26T22:33:03.0174945Z             {
2026-07-26T22:33:03.0175051Z               "path": "crates/spt-store/src/registry.rs",
2026-07-26T22:33:03.0175140Z               "line": 319
2026-07-26T22:33:03.0175221Z             }
2026-07-26T22:33:03.0175302Z           ]
2026-07-26T22:33:03.0175383Z         }
2026-07-26T22:33:03.0175462Z       }
2026-07-26T22:33:03.0175547Z     },
2026-07-26T22:33:03.0175628Z     {
2026-07-26T22:33:03.0175729Z       "id": "REQ-HAZARD-REGISTRY-STALL",
2026-07-26T22:33:03.0178729Z       "title": "REGISTRY-LIFECYCLE W1 (KNOWN-HAZARDS 7.44, hertz post-close v0.36 RCA — the umbrella conformance seam): streams and seats on a long-lived connection have BOUNDED lifetime. The hertz regression seam verbatim: real long-lived pump + dispatcher integration, N registry-only rounds over ONE persistent connection, asserting (a) dispatcher-eligible Registry rows plateau O(active) not O(N); (b) physical stream/subscriber/seat counts plateau after completion CROSS-FAMILY (sync/update seats included, not just Registry); (c) snapshot writes O(feeds) not O(chunks x record-kinds); (d) brain refresh produces ZERO historical Registry replay subscriptions; (e) zero CONN_WRITE_POISONED / replay-write-failed events; (f) broker thread count returns to a bounded baseline. HEAVY nextest group at birth (spawns a real daemon tree). Binding: redispatch D1/D1b + REDISPATCH-STALL T1-T7 + mesh-recovery legs green every leg (retire machinery + registry gate = substrate). Gate: int — the seam above; doc — KNOWN-HAZARDS 7.44.",
2026-07-26T22:33:03.0178839Z       "requiredStages": [
2026-07-26T22:33:03.0178920Z         "doc",
2026-07-26T22:33:03.0179086Z         "int"
2026-07-26T22:33:03.0179169Z       ],
2026-07-26T22:33:03.0179259Z       "stages": {
2026-07-26T22:33:03.0179344Z         "doc": {
2026-07-26T22:33:03.0179445Z           "complete": true,
2026-07-26T22:33:03.0179531Z           "evidence": [
2026-07-26T22:33:03.0179611Z             {
2026-07-26T22:33:03.0179720Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0179808Z               "line": 699
2026-07-26T22:33:03.0179893Z             }
2026-07-26T22:33:03.0180002Z           ]
2026-07-26T22:33:03.0180084Z         },
2026-07-26T22:33:03.0180179Z         "impl": {
2026-07-26T22:33:03.0180264Z           "complete": false,
2026-07-26T22:33:03.0180350Z           "evidence": []
2026-07-26T22:33:03.0180442Z         },
2026-07-26T22:33:03.0180527Z         "int": {
2026-07-26T22:33:03.0180621Z           "complete": true,
2026-07-26T22:33:03.0180711Z           "evidence": [
2026-07-26T22:33:03.0180938Z             {
2026-07-26T22:33:03.0181086Z               "path": "crates/spt-daemon/tests/registry_lifecycle.rs",
2026-07-26T22:33:03.0181177Z               "line": 165
2026-07-26T22:33:03.0181253Z             }
2026-07-26T22:33:03.0181343Z           ]
2026-07-26T22:33:03.0181420Z         },
2026-07-26T22:33:03.0181501Z         "unit": {
2026-07-26T22:33:03.0181596Z           "complete": false,
2026-07-26T22:33:03.0181691Z           "evidence": []
2026-07-26T22:33:03.0181773Z         }
2026-07-26T22:33:03.0181859Z       }
2026-07-26T22:33:03.0181934Z     },
2026-07-26T22:33:03.0182026Z     {
2026-07-26T22:33:03.0182135Z       "id": "REQ-HAZARD-RENDER-LIFECYCLE",
2026-07-26T22:33:03.0184056Z       "title": "RC-RENDER-TRUTH W3 (KNOWN-HAZARDS 7.47 — umbrella conformance seam for ADR-0043): the physical terminal is never mutated or terminated outside its renderer's ordered state model. Regression matrix from the hertz RCA: output-before-exit through the production path; unconditional display teardown across every rc exit class; TUI baseline reconstructs whole after out-of-band mutation (recording backend); repaint replays tracked modes. Deferred P2 seeds recorded, NOT this milestone: Exit{after_seq} watermark defense; per-client semantic baseline (only if spt ever transforms live frames). Gate: int — the matrix; doc — KNOWN-HAZARDS 7.47.",
2026-07-26T22:33:03.0184271Z       "requiredStages": [
2026-07-26T22:33:03.0184366Z         "doc",
2026-07-26T22:33:03.0184466Z         "int"
2026-07-26T22:33:03.0184575Z       ],
2026-07-26T22:33:03.0184666Z       "stages": {
2026-07-26T22:33:03.0184752Z         "doc": {
2026-07-26T22:33:03.0184842Z           "complete": true,
2026-07-26T22:33:03.0184920Z           "evidence": [
2026-07-26T22:33:03.0185001Z             {
2026-07-26T22:33:03.0185100Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0185200Z               "line": 720
2026-07-26T22:33:03.0185282Z             }
2026-07-26T22:33:03.0185371Z           ]
2026-07-26T22:33:03.0185452Z         },
2026-07-26T22:33:03.0185534Z         "impl": {
2026-07-26T22:33:03.0185616Z           "complete": false,
2026-07-26T22:33:03.0185714Z           "evidence": []
2026-07-26T22:33:03.0185804Z         },
2026-07-26T22:33:03.0185890Z         "int": {
2026-07-26T22:33:03.0185971Z           "complete": true,
2026-07-26T22:33:03.0186069Z           "evidence": [
2026-07-26T22:33:03.0186159Z             {
2026-07-26T22:33:03.0186299Z               "path": "crates/spt-daemon/tests/render_lifecycle.rs",
2026-07-26T22:33:03.0186379Z               "line": 76
2026-07-26T22:33:03.0186460Z             },
2026-07-26T22:33:03.0186541Z             {
2026-07-26T22:33:03.0186652Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.0186736Z               "line": 625
2026-07-26T22:33:03.0186818Z             },
2026-07-26T22:33:03.0186909Z             {
2026-07-26T22:33:03.0187022Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.0187113Z               "line": 2571
2026-07-26T22:33:03.0187205Z             }
2026-07-26T22:33:03.0187285Z           ]
2026-07-26T22:33:03.0187380Z         },
2026-07-26T22:33:03.0187462Z         "unit": {
2026-07-26T22:33:03.0187562Z           "complete": false,
2026-07-26T22:33:03.0187648Z           "evidence": []
2026-07-26T22:33:03.0187724Z         }
2026-07-26T22:33:03.0187801Z       }
2026-07-26T22:33:03.0187886Z     },
2026-07-26T22:33:03.0187967Z     {
2026-07-26T22:33:03.0188092Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-07-26T22:33:03.0188358Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-07-26T22:33:03.0188459Z       "requiredStages": [
2026-07-26T22:33:03.0188544Z         "impl",
2026-07-26T22:33:03.0188634Z         "unit",
2026-07-26T22:33:03.0188709Z         "int"
2026-07-26T22:33:03.0188810Z       ],
2026-07-26T22:33:03.0188889Z       "stages": {
2026-07-26T22:33:03.0189074Z         "doc": {
2026-07-26T22:33:03.0189156Z           "complete": false,
2026-07-26T22:33:03.0189351Z           "evidence": []
2026-07-26T22:33:03.0189438Z         },
2026-07-26T22:33:03.0189528Z         "impl": {
2026-07-26T22:33:03.0189613Z           "complete": true,
2026-07-26T22:33:03.0189704Z           "evidence": [
2026-07-26T22:33:03.0189771Z             {
2026-07-26T22:33:03.0189899Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.0189990Z               "line": 622
2026-07-26T22:33:03.0190067Z             },
2026-07-26T22:33:03.0190152Z             {
2026-07-26T22:33:03.0190271Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.0190368Z               "line": 1452
2026-07-26T22:33:03.0190453Z             },
2026-07-26T22:33:03.0190529Z             {
2026-07-26T22:33:03.0190634Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.0190730Z               "line": 1533
2026-07-26T22:33:03.0190906Z             },
2026-07-26T22:33:03.0190992Z             {
2026-07-26T22:33:03.0191106Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.0191200Z               "line": 1578
2026-07-26T22:33:03.0191276Z             },
2026-07-26T22:33:03.0191362Z             {
2026-07-26T22:33:03.0191479Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0191579Z               "line": 4941
2026-07-26T22:33:03.0191661Z             },
2026-07-26T22:33:03.0191747Z             {
2026-07-26T22:33:03.0191879Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0191985Z               "line": 5390
2026-07-26T22:33:03.0192066Z             },
2026-07-26T22:33:03.0192161Z             {
2026-07-26T22:33:03.0192261Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0192357Z               "line": 5678
2026-07-26T22:33:03.0192428Z             },
2026-07-26T22:33:03.0192518Z             {
2026-07-26T22:33:03.0192634Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0192724Z               "line": 5743
2026-07-26T22:33:03.0192814Z             },
2026-07-26T22:33:03.0192895Z             {
2026-07-26T22:33:03.0193000Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.0193096Z               "line": 67
2026-07-26T22:33:03.0193181Z             },
2026-07-26T22:33:03.0193259Z             {
2026-07-26T22:33:03.0193372Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.0193467Z               "line": 414
2026-07-26T22:33:03.0193555Z             },
2026-07-26T22:33:03.0193635Z             {
2026-07-26T22:33:03.0193744Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:03.0193836Z               "line": 235
2026-07-26T22:33:03.0193917Z             },
2026-07-26T22:33:03.0194006Z             {
2026-07-26T22:33:03.0194119Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.0194216Z               "line": 374
2026-07-26T22:33:03.0194302Z             },
2026-07-26T22:33:03.0194378Z             {
2026-07-26T22:33:03.0194496Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.0194593Z               "line": 417
2026-07-26T22:33:03.0194673Z             }
2026-07-26T22:33:03.0194753Z           ]
2026-07-26T22:33:03.0194836Z         },
2026-07-26T22:33:03.0194917Z         "int": {
2026-07-26T22:33:03.0195012Z           "complete": true,
2026-07-26T22:33:03.0195107Z           "evidence": [
2026-07-26T22:33:03.0195193Z             {
2026-07-26T22:33:03.0195312Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-07-26T22:33:03.0195407Z               "line": 27
2026-07-26T22:33:03.0195494Z             },
2026-07-26T22:33:03.0195579Z             {
2026-07-26T22:33:03.0195702Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-07-26T22:33:03.0195800Z               "line": 149
2026-07-26T22:33:03.0195885Z             },
2026-07-26T22:33:03.0195979Z             {
2026-07-26T22:33:03.0196099Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-07-26T22:33:03.0196195Z               "line": 214
2026-07-26T22:33:03.0196350Z             }
2026-07-26T22:33:03.0196431Z           ]
2026-07-26T22:33:03.0196508Z         },
2026-07-26T22:33:03.0196596Z         "unit": {
2026-07-26T22:33:03.0196691Z           "complete": true,
2026-07-26T22:33:03.0196791Z           "evidence": [
2026-07-26T22:33:03.0196864Z             {
2026-07-26T22:33:03.0196991Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.0197063Z               "line": 636
2026-07-26T22:33:03.0197150Z             },
2026-07-26T22:33:03.0197230Z             {
2026-07-26T22:33:03.0197349Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.0197431Z               "line": 668
2026-07-26T22:33:03.0197516Z             },
2026-07-26T22:33:03.0197597Z             {
2026-07-26T22:33:03.0197717Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.0197874Z               "line": 724
2026-07-26T22:33:03.0197964Z             },
2026-07-26T22:33:03.0198037Z             {
2026-07-26T22:33:03.0198159Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.0198250Z               "line": 2277
2026-07-26T22:33:03.0198332Z             },
2026-07-26T22:33:03.0198414Z             {
2026-07-26T22:33:03.0198546Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:03.0198642Z               "line": 772
2026-07-26T22:33:03.0198724Z             },
2026-07-26T22:33:03.0198808Z             {
2026-07-26T22:33:03.0198928Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-07-26T22:33:03.0199104Z               "line": 290
2026-07-26T22:33:03.0199184Z             },
2026-07-26T22:33:03.0199269Z             {
2026-07-26T22:33:03.0199389Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-07-26T22:33:03.0199477Z               "line": 231
2026-07-26T22:33:03.0199558Z             },
2026-07-26T22:33:03.0199639Z             {
2026-07-26T22:33:03.0199750Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.0199834Z               "line": 1073
2026-07-26T22:33:03.0199915Z             },
2026-07-26T22:33:03.0199993Z             {
2026-07-26T22:33:03.0200107Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.0200202Z               "line": 1103
2026-07-26T22:33:03.0200274Z             }
2026-07-26T22:33:03.0200360Z           ]
2026-07-26T22:33:03.0200441Z         }
2026-07-26T22:33:03.0200521Z       }
2026-07-26T22:33:03.0200603Z     },
2026-07-26T22:33:03.0200688Z     {
2026-07-26T22:33:03.0200803Z       "id": "REQ-HAZARD-RESUME-CUSTODY-ABA",
2026-07-26T22:33:03.0202187Z       "title": "KNOWN-HAZARDS 7.51: process custody is an identity, never a bare PID — a recycled pid must read NOT OURS. The hazard-conformance twin of REQ-RESUME-CUSTODY-IDENTITY: its int-stage recycled-pid rig IS this hazard's required test (custody pair mismatching a live impostor pid -> record deleted, reconcile proceeds, row goes honest). Registered separately so the hazard list stays a conformance checklist (CLAUDE.md rule 4) — evidence may tag the same rig.",
2026-07-26T22:33:03.0202298Z       "requiredStages": [
2026-07-26T22:33:03.0202383Z         "doc",
2026-07-26T22:33:03.0202468Z         "int"
2026-07-26T22:33:03.0202541Z       ],
2026-07-26T22:33:03.0202631Z       "stages": {
2026-07-26T22:33:03.0202721Z         "doc": {
2026-07-26T22:33:03.0202812Z           "complete": true,
2026-07-26T22:33:03.0202902Z           "evidence": [
2026-07-26T22:33:03.0202988Z             {
2026-07-26T22:33:03.0203092Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0203190Z               "line": 751
2026-07-26T22:33:03.0203269Z             }
2026-07-26T22:33:03.0203350Z           ]
2026-07-26T22:33:03.0203427Z         },
2026-07-26T22:33:03.0203518Z         "impl": {
2026-07-26T22:33:03.0203613Z           "complete": false,
2026-07-26T22:33:03.0203718Z           "evidence": []
2026-07-26T22:33:03.0203795Z         },
2026-07-26T22:33:03.0203885Z         "int": {
2026-07-26T22:33:03.0203980Z           "complete": true,
2026-07-26T22:33:03.0204172Z           "evidence": [
2026-07-26T22:33:03.0204256Z             {
2026-07-26T22:33:03.0204410Z               "path": "crates/spt-daemon/tests/resume_custody_aba.rs",
2026-07-26T22:33:03.0204501Z               "line": 128
2026-07-26T22:33:03.0204594Z             }
2026-07-26T22:33:03.0204674Z           ]
2026-07-26T22:33:03.0204761Z         },
2026-07-26T22:33:03.0204848Z         "unit": {
2026-07-26T22:33:03.0204952Z           "complete": false,
2026-07-26T22:33:03.0205047Z           "evidence": []
2026-07-26T22:33:03.0205138Z         }
2026-07-26T22:33:03.0205215Z       }
2026-07-26T22:33:03.0205295Z     },
2026-07-26T22:33:03.0205371Z     {
2026-07-26T22:33:03.0205501Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-07-26T22:33:03.0207147Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-07-26T22:33:03.0207366Z       "requiredStages": [
2026-07-26T22:33:03.0207457Z         "doc",
2026-07-26T22:33:03.0207537Z         "impl",
2026-07-26T22:33:03.0207628Z         "unit"
2026-07-26T22:33:03.0207705Z       ],
2026-07-26T22:33:03.0207790Z       "stages": {
2026-07-26T22:33:03.0207875Z         "doc": {
2026-07-26T22:33:03.0207972Z           "complete": true,
2026-07-26T22:33:03.0208048Z           "evidence": [
2026-07-26T22:33:03.0208129Z             {
2026-07-26T22:33:03.0208238Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0208339Z               "line": 349
2026-07-26T22:33:03.0208410Z             }
2026-07-26T22:33:03.0208495Z           ]
2026-07-26T22:33:03.0208577Z         },
2026-07-26T22:33:03.0208668Z         "impl": {
2026-07-26T22:33:03.0208768Z           "complete": true,
2026-07-26T22:33:03.0208868Z           "evidence": [
2026-07-26T22:33:03.0209058Z             {
2026-07-26T22:33:03.0209260Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-07-26T22:33:03.0209391Z               "line": 33
2026-07-26T22:33:03.0209478Z             },
2026-07-26T22:33:03.0209570Z             {
2026-07-26T22:33:03.0209702Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-07-26T22:33:03.0209782Z               "line": 39
2026-07-26T22:33:03.0209887Z             }
2026-07-26T22:33:03.0210014Z           ]
2026-07-26T22:33:03.0210137Z         },
2026-07-26T22:33:03.0210223Z         "int": {
2026-07-26T22:33:03.0210320Z           "complete": false,
2026-07-26T22:33:03.0210404Z           "evidence": []
2026-07-26T22:33:03.0210500Z         },
2026-07-26T22:33:03.0210573Z         "unit": {
2026-07-26T22:33:03.0210667Z           "complete": true,
2026-07-26T22:33:03.0210767Z           "evidence": [
2026-07-26T22:33:03.0210844Z             {
2026-07-26T22:33:03.0210968Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-07-26T22:33:03.0211057Z               "line": 95
2026-07-26T22:33:03.0211139Z             }
2026-07-26T22:33:03.0211221Z           ]
2026-07-26T22:33:03.0211301Z         }
2026-07-26T22:33:03.0211382Z       }
2026-07-26T22:33:03.0211459Z     },
2026-07-26T22:33:03.0211540Z     {
2026-07-26T22:33:03.0211644Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-07-26T22:33:03.0214211Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-07-26T22:33:03.0214468Z       "requiredStages": [
2026-07-26T22:33:03.0214554Z         "impl",
2026-07-26T22:33:03.0214641Z         "unit"
2026-07-26T22:33:03.0214727Z       ],
2026-07-26T22:33:03.0214816Z       "stages": {
2026-07-26T22:33:03.0214893Z         "doc": {
2026-07-26T22:33:03.0214984Z           "complete": false,
2026-07-26T22:33:03.0215065Z           "evidence": []
2026-07-26T22:33:03.0215149Z         },
2026-07-26T22:33:03.0215234Z         "impl": {
2026-07-26T22:33:03.0215436Z           "complete": true,
2026-07-26T22:33:03.0215516Z           "evidence": [
2026-07-26T22:33:03.0215597Z             {
2026-07-26T22:33:03.0215741Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0215831Z               "line": 658
2026-07-26T22:33:03.0215907Z             }
2026-07-26T22:33:03.0215989Z           ]
2026-07-26T22:33:03.0216070Z         },
2026-07-26T22:33:03.0216150Z         "int": {
2026-07-26T22:33:03.0216242Z           "complete": false,
2026-07-26T22:33:03.0216332Z           "evidence": []
2026-07-26T22:33:03.0216404Z         },
2026-07-26T22:33:03.0216489Z         "unit": {
2026-07-26T22:33:03.0216590Z           "complete": true,
2026-07-26T22:33:03.0216681Z           "evidence": [
2026-07-26T22:33:03.0216761Z             {
2026-07-26T22:33:03.0216890Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0220438Z               "line": 2177
2026-07-26T22:33:03.0220537Z             }
2026-07-26T22:33:03.0220635Z           ]
2026-07-26T22:33:03.0220721Z         }
2026-07-26T22:33:03.0220808Z       }
2026-07-26T22:33:03.0220889Z     },
2026-07-26T22:33:03.0220983Z     {
2026-07-26T22:33:03.0221133Z       "id": "REQ-HAZARD-SEEDMAP-CONNECT-UNBOUNDED",
2026-07-26T22:33:03.0224595Z       "title": "SEED (doyle-filed, 2026-07-05, from the REQ-HAZARD-DAEMON-STOP-BARRIER B2 fix): the PRODUCTION seedmap connect callers (put / take / is_running) inherit the SAME interprocess WaitNamedPipeW-forever hazard the stop path just bounded — a Windows named-pipe connect to a name that EXISTS but has NO accepting instance parks in NMPWAIT_WAIT_FOREVER, so a slow / half-dead seed daemon could wedge a live `api seed` / `api listen` / `daemon start`. UPDATE (2026-07-05, doyle reversed the stop-path scope-guard): request_stop's OWN initial connect became load-bearing (a stop-guard re-dialing an already-dying name parked forever, resurrecting the convoy) → it is now bounded via connect_bounded under REQ-HAZARD-DAEMON-STOP-BARRIER (every dial on the STOP path is bounded). REMAINING deferred here = the put / take / is_running production clients. FIX (deferred, needs its own ruling): a shared bounded seed-control connect for those — but a 2s-style cap on a legitimately slow daemon-start connect is a real behavior change (a slow-but-fine start could become a spurious failure), so the timeout + degrade semantics need design first. NOT built — activate when scoped.",
2026-07-26T22:33:03.0224718Z       "requiredStages": [],
2026-07-26T22:33:03.0224799Z       "stages": {
2026-07-26T22:33:03.0224886Z         "doc": {
2026-07-26T22:33:03.0224977Z           "complete": false,
2026-07-26T22:33:03.0225066Z           "evidence": []
2026-07-26T22:33:03.0225148Z         },
2026-07-26T22:33:03.0225230Z         "impl": {
2026-07-26T22:33:03.0225320Z           "complete": false,
2026-07-26T22:33:03.0225410Z           "evidence": []
2026-07-26T22:33:03.0225491Z         },
2026-07-26T22:33:03.0225578Z         "int": {
2026-07-26T22:33:03.0225672Z           "complete": false,
2026-07-26T22:33:03.0225767Z           "evidence": []
2026-07-26T22:33:03.0225853Z         },
2026-07-26T22:33:03.0225944Z         "unit": {
2026-07-26T22:33:03.0226162Z           "complete": false,
2026-07-26T22:33:03.0226254Z           "evidence": []
2026-07-26T22:33:03.0226335Z         }
2026-07-26T22:33:03.0226420Z       }
2026-07-26T22:33:03.0226497Z     },
2026-07-26T22:33:03.0226583Z     {
2026-07-26T22:33:03.0226692Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-07-26T22:33:03.0228877Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-07-26T22:33:03.0229168Z       "requiredStages": [
2026-07-26T22:33:03.0229244Z         "unit"
2026-07-26T22:33:03.0229324Z       ],
2026-07-26T22:33:03.0229403Z       "stages": {
2026-07-26T22:33:03.0229512Z         "doc": {
2026-07-26T22:33:03.0229602Z           "complete": false,
2026-07-26T22:33:03.0229688Z           "evidence": []
2026-07-26T22:33:03.0229764Z         },
2026-07-26T22:33:03.0229855Z         "impl": {
2026-07-26T22:33:03.0229945Z           "complete": true,
2026-07-26T22:33:03.0230032Z           "evidence": [
2026-07-26T22:33:03.0230117Z             {
2026-07-26T22:33:03.0230232Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0230322Z               "line": 7865
2026-07-26T22:33:03.0230399Z             },
2026-07-26T22:33:03.0230493Z             {
2026-07-26T22:33:03.0230598Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0230681Z               "line": 7917
2026-07-26T22:33:03.0230775Z             },
2026-07-26T22:33:03.0230850Z             {
2026-07-26T22:33:03.0230959Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0231045Z               "line": 7962
2026-07-26T22:33:03.0231139Z             },
2026-07-26T22:33:03.0231219Z             {
2026-07-26T22:33:03.0231344Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.0231435Z               "line": 92
2026-07-26T22:33:03.0231529Z             },
2026-07-26T22:33:03.0231615Z             {
2026-07-26T22:33:03.0231726Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.0231816Z               "line": 148
2026-07-26T22:33:03.0231901Z             },
2026-07-26T22:33:03.0231983Z             {
2026-07-26T22:33:03.0232093Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.0232187Z               "line": 192
2026-07-26T22:33:03.0232264Z             },
2026-07-26T22:33:03.0232346Z             {
2026-07-26T22:33:03.0232450Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.0232555Z               "line": 200
2026-07-26T22:33:03.0232632Z             },
2026-07-26T22:33:03.0232722Z             {
2026-07-26T22:33:03.0232831Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.0232928Z               "line": 211
2026-07-26T22:33:03.0233004Z             },
2026-07-26T22:33:03.0233098Z             {
2026-07-26T22:33:03.0233204Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.0233295Z               "line": 265
2026-07-26T22:33:03.0233375Z             },
2026-07-26T22:33:03.0233450Z             {
2026-07-26T22:33:03.0233560Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.0233650Z               "line": 279
2026-07-26T22:33:03.0233729Z             }
2026-07-26T22:33:03.0233810Z           ]
2026-07-26T22:33:03.0233901Z         },
2026-07-26T22:33:03.0233983Z         "int": {
2026-07-26T22:33:03.0234077Z           "complete": false,
2026-07-26T22:33:03.0234168Z           "evidence": []
2026-07-26T22:33:03.0234350Z         },
2026-07-26T22:33:03.0234444Z         "unit": {
2026-07-26T22:33:03.0234536Z           "complete": true,
2026-07-26T22:33:03.0234635Z           "evidence": [
2026-07-26T22:33:03.0234711Z             {
2026-07-26T22:33:03.0234836Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.0234926Z               "line": 419
2026-07-26T22:33:03.0235012Z             },
2026-07-26T22:33:03.0235093Z             {
2026-07-26T22:33:03.0235213Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.0235303Z               "line": 470
2026-07-26T22:33:03.0235374Z             },
2026-07-26T22:33:03.0235456Z             {
2026-07-26T22:33:03.0235565Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.0235646Z               "line": 499
2026-07-26T22:33:03.0235829Z             },
2026-07-26T22:33:03.0235913Z             {
2026-07-26T22:33:03.0236027Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.0236110Z               "line": 526
2026-07-26T22:33:03.0236200Z             }
2026-07-26T22:33:03.0236279Z           ]
2026-07-26T22:33:03.0236355Z         }
2026-07-26T22:33:03.0236441Z       }
2026-07-26T22:33:03.0236528Z     },
2026-07-26T22:33:03.0236603Z     {
2026-07-26T22:33:03.0236722Z       "id": "REQ-HAZARD-SESSION-PIN-WEDGE",
2026-07-26T22:33:03.0243483Z       "title": "A perch PINNED to a DEAD session-id self-heals instead of wedging forever. authenticate() (spt/src/api/auth.rs:78) gates api poll/state/boundary on proof-sid == info.json.session_id; if ONE boundary rotation is lost (transient env corruption kills the /clear-era hook), the perch stays pinned to the dead sid and EVERY id-scoped hook call refuses — INCLUDING boundary itself (it presents the new sid), a permanent strand (ready:false, stale .idle, drain no-ops, WAN spool sleeps forever; AUTH_REFUSED is stderr-only = invisible inside a hook). FIX: authenticate() gains a DEAD-OWNER fallback — when the sid MISMATCHES AND the perch's recorded pid is dead (proc::is_process_alive==false), ACCEPT the caller's sid and RE-PIN (rotate session_id + log SESSION_REPIN loud). Same trust model as establish_perch's conflict gate (api/startup.rs:207-210), which already allows rebind exactly when owner_alive==false (an orphaned perch accepts a new LOCAL owner). A LIVE-owner mismatch STILL refuses (squat protection UNCHANGED). ADDITIVE to token auth — the existing token-auth recovery path is UNTOUCHED; the new branch fires only on (no token) AND (sid mismatch) AND (owner dead). COVERAGE SPLIT (explicit, perri clean-room 2026-07-02 — the wedge latches on /clear even in a CLEAN env, so the corruption domino was sufficient but NOT necessary): the dead-owner re-pin rescues CRASHED/DEAD sessions ONLY; a LIVE-pid rotation (/clear, /compact — same process, new sid) is CORRECTLY refused without the departed session's prior-sid proof and MUST NOT be widened to live owners. The live-rotation contract is adapter-side: the adapter PERSISTS the prior sid across rotation and PRESENTS it as boundary proof (perri's state-file pattern = the reference); a silent boundary skip on an unresolvable id, or a boundary call with NO auth proof, strands the perch (perri's court). Core rescues only the dead-owner orphan; live-rotation proof is the harness-contract's job (see the harness-contract boundary section, which cross-refs this hazard). PARKED (not this wave, logged): pid-ancestry self-proving rotation (core walks the caller's real ancestry vs info.json.pid) — needs an ADR + Windows parent-spoof caveats. (F-024C, F024C-AUTHWEDGE-ADDENDUM + F024D-DOCSCOPE)",
2026-07-26T22:33:03.0243629Z       "requiredStages": [
2026-07-26T22:33:03.0243701Z         "doc",
2026-07-26T22:33:03.0243784Z         "impl",
2026-07-26T22:33:03.0243864Z         "unit"
2026-07-26T22:33:03.0243949Z       ],
2026-07-26T22:33:03.0244029Z       "stages": {
2026-07-26T22:33:03.0244120Z         "doc": {
2026-07-26T22:33:03.0244215Z           "complete": true,
2026-07-26T22:33:03.0244299Z           "evidence": [
2026-07-26T22:33:03.0244480Z             {
2026-07-26T22:33:03.0244600Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0244685Z               "line": 553
2026-07-26T22:33:03.0244766Z             },
2026-07-26T22:33:03.0244848Z             {
2026-07-26T22:33:03.0244952Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0245037Z               "line": 863
2026-07-26T22:33:03.0245125Z             }
2026-07-26T22:33:03.0245205Z           ]
2026-07-26T22:33:03.0245285Z         },
2026-07-26T22:33:03.0245372Z         "impl": {
2026-07-26T22:33:03.0245468Z           "complete": true,
2026-07-26T22:33:03.0245553Z           "evidence": [
2026-07-26T22:33:03.0245634Z             {
2026-07-26T22:33:03.0245740Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:03.0245834Z               "line": 109
2026-07-26T22:33:03.0246026Z             }
2026-07-26T22:33:03.0246102Z           ]
2026-07-26T22:33:03.0246181Z         },
2026-07-26T22:33:03.0246263Z         "int": {
2026-07-26T22:33:03.0246355Z           "complete": false,
2026-07-26T22:33:03.0246450Z           "evidence": []
2026-07-26T22:33:03.0246530Z         },
2026-07-26T22:33:03.0246617Z         "unit": {
2026-07-26T22:33:03.0246708Z           "complete": true,
2026-07-26T22:33:03.0246802Z           "evidence": [
2026-07-26T22:33:03.0246887Z             {
2026-07-26T22:33:03.0247006Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:03.0247093Z               "line": 327
2026-07-26T22:33:03.0247182Z             },
2026-07-26T22:33:03.0247254Z             {
2026-07-26T22:33:03.0247360Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:03.0247446Z               "line": 350
2026-07-26T22:33:03.0247525Z             },
2026-07-26T22:33:03.0247612Z             {
2026-07-26T22:33:03.0247712Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:03.0247807Z               "line": 372
2026-07-26T22:33:03.0247898Z             }
2026-07-26T22:33:03.0247989Z           ]
2026-07-26T22:33:03.0248074Z         }
2026-07-26T22:33:03.0248159Z       }
2026-07-26T22:33:03.0248231Z     },
2026-07-26T22:33:03.0248314Z     {
2026-07-26T22:33:03.0248479Z       "id": "REQ-HAZARD-SHAREDSEND-NO-BLOCKING-WRITE-UNDER-LOCK",
2026-07-26T22:33:03.0258831Z       "title": "UPDATE-WEDGE round-4 (hertz RCA, root reproduced + source-pinned on Windows 2026-07-09): EVERY write on a physical broker connection rides ONE bounded + cancelable + poison-on-failure framed-write primitive — no writer may hold the connection's serialized send gate across an UNBOUNDED OS write. ROOT: controller_writer held the SharedSend = Arc<Mutex<SendHalf>> guard ACROSS a blocking write_frame; on Windows interprocess 2.4.2 routes the send to WriteFileEx + SleepEx(INFINITE, alertable) with NO supported write timeout (set_timeout → Unsupported), so an `rc --take` controller consumer that stops reading blocks the write INDEFINITELY (~127.95 s in the field capture, released only when a brain restart tore the conns down). Logical stall_evict_controller (REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE) removes the controller ROLE but neither cancels the in-flight pipe write, closes the physical connection, nor invokes CancelIoEx — the detached writer keeps its SharedSend clone + live stack-owned mutex guard. Load-gated: needs a real seq>0 frame + a non-draining consumer (seq-0 boot conns + a quiescent update are clean — why v0.30.5's controlled apply passed); CTRL_WRITE_LOCKED wait_us=0 on all four capture writers exonerates the mutex convoy — the block is INSIDE the OS write, after lock acquisition. Existing deadlines can't bound it: CONTROLLER_WRITE_DEADLINE is output-driven channel-full handling (a writer blocked on its first owned frame never fills the channel); BRAIN_WRITE_DEADLINE is an age PREDICATE sampled opportunistically, not an I/O timer. FIX (accepted shape, doyle GO + 3 confirms): broker-owned Arc conn object (conn.rs BrokerConn) replacing raw Arc<Mutex<SendHalf>> — serialized write gate (bounded gate-wait) + send half (never leaves the object, so a bypass cannot compile) + idempotent poisoned state + per-in-flight op identity + platform abort seam, with an INDEPENDENT per-conn watchdog firing OUT OF BAND at an ABSOLUTE deadline stamped at write entry covering BOTH gate-wait and OS write completion (brain_write_deadline() — the existing SPT_BRAIN_WRITE_DEADLINE_MS knob; the abort NEVER relies on the write returning or on opportunistic stall-evict sampling). On deadline/partial/cancel/unknown completion: (1) poison the whole physical conn, (2) abort read+write (cfg(windows) CancelIoEx then DisconnectNamedPipe; cfg(unix) UnixStream::shutdown(Both)) so handle_conn reaches existing EOF cleanup, (3) wait for the canceled op to report completion before releasing its buffer (interprocess write_exsync returns only after the completion APC — release = write return), (4) NEVER reuse the conn (a timed-out length-prefixed frame may be partially written), (5) join/finish the retired writer before reporting physical cleanup. Controller (replay + live), viewer, dispatch-reply (send_frame/send_error + inline dispatch_* replies), and nethost stream-log/presence writes ALL route through the primitive — leaving ANY raw unbounded write behind the gate preserves the failure class (grep-proven: no surviving raw send.lock()+write_frame on a physical conn path). NO new output queue (the bounded queue + isolated writer exist; the block is BELOW them); NO PIPE_NOWAIT (recorded mid-frame corruption risk). Broker-side only, no wire change, mixed-version peers wire-compatible; Unix keeps existing semantics under the same poison/retire invariant.",
2026-07-26T22:33:03.0259363Z       "requiredStages": [
2026-07-26T22:33:03.0259445Z         "doc",
2026-07-26T22:33:03.0259528Z         "impl",
2026-07-26T22:33:03.0259607Z         "int"
2026-07-26T22:33:03.0259692Z       ],
2026-07-26T22:33:03.0259768Z       "stages": {
2026-07-26T22:33:03.0259854Z         "doc": {
2026-07-26T22:33:03.0259942Z           "complete": true,
2026-07-26T22:33:03.0260037Z           "evidence": [
2026-07-26T22:33:03.0260118Z             {
2026-07-26T22:33:03.0260230Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0260314Z               "line": 647
2026-07-26T22:33:03.0260395Z             }
2026-07-26T22:33:03.0260472Z           ]
2026-07-26T22:33:03.0260553Z         },
2026-07-26T22:33:03.0260628Z         "impl": {
2026-07-26T22:33:03.0260714Z           "complete": true,
2026-07-26T22:33:03.0260802Z           "evidence": [
2026-07-26T22:33:03.0260877Z             {
2026-07-26T22:33:03.0261001Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0261097Z               "line": 2382
2026-07-26T22:33:03.0261177Z             },
2026-07-26T22:33:03.0261258Z             {
2026-07-26T22:33:03.0261378Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0261464Z               "line": 2415
2026-07-26T22:33:03.0261550Z             },
2026-07-26T22:33:03.0261640Z             {
2026-07-26T22:33:03.0261756Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0261845Z               "line": 2607
2026-07-26T22:33:03.0261935Z             },
2026-07-26T22:33:03.0262022Z             {
2026-07-26T22:33:03.0262140Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0262241Z               "line": 3987
2026-07-26T22:33:03.0262323Z             },
2026-07-26T22:33:03.0262404Z             {
2026-07-26T22:33:03.0262512Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0262606Z               "line": 4107
2026-07-26T22:33:03.0262683Z             },
2026-07-26T22:33:03.0262763Z             {
2026-07-26T22:33:03.0262881Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0262972Z               "line": 6105
2026-07-26T22:33:03.0263053Z             },
2026-07-26T22:33:03.0263129Z             {
2026-07-26T22:33:03.0263243Z               "path": "crates/spt-daemon/src/conn.rs",
2026-07-26T22:33:03.0263330Z               "line": 60
2026-07-26T22:33:03.0263435Z             }
2026-07-26T22:33:03.0263630Z           ]
2026-07-26T22:33:03.0263711Z         },
2026-07-26T22:33:03.0263797Z         "int": {
2026-07-26T22:33:03.0263896Z           "complete": true,
2026-07-26T22:33:03.0263979Z           "evidence": [
2026-07-26T22:33:03.0264059Z             {
2026-07-26T22:33:03.0264201Z               "path": "crates/spt-daemon/tests/brain_decouple.rs",
2026-07-26T22:33:03.0264299Z               "line": 474
2026-07-26T22:33:03.0264374Z             }
2026-07-26T22:33:03.0264459Z           ]
2026-07-26T22:33:03.0264540Z         },
2026-07-26T22:33:03.0264623Z         "unit": {
2026-07-26T22:33:03.0264717Z           "complete": false,
2026-07-26T22:33:03.0264817Z           "evidence": []
2026-07-26T22:33:03.0264894Z         }
2026-07-26T22:33:03.0264970Z       }
2026-07-26T22:33:03.0265055Z     },
2026-07-26T22:33:03.0265145Z     {
2026-07-26T22:33:03.0265353Z       "id": "REQ-HAZARD-SHELL-STALE-ONLINE",
2026-07-26T22:33:03.0297376Z       "title": "A shell instance's ONLINE-ness is DERIVED (recorded status AND its recorded `shell.pid` not provably dead), never the recorded `status` field alone — an abruptly-dead binary (force-kill, crash, OOM: no link-break, so `close_shell`'s offline flip never runs) must not read online forever. The shell-side twin of REQ-HAZARD-DAEMON-HOSTED-LIVENESS, which gave AGENT perches exactly this resolver and which shells never got. PROVABLY DEAD is the narrow discriminant: `shell.pid` present AND parses non-zero AND `!is_process_alive` — pid absent, unparseable, or 0 (a broker-hosted spawn whose backend exposed no pid records 0) reads ALIVE, the same interim-parity/fail-toward-alive stance `liveness.rs` already holds, so a pid-less backend is NEVER falsely declared dead. Recycled-pid caveat, accepted at mint: a reused pid reads alive, so the heal is missed, never mis-fired — the failure direction is 'stays stale', never 'kills a live instance'. SITE CLASSIFICATION IS PART OF THE REQUIREMENT (authoritative cfg(test)-excluded census at mint = 8 status reads, 3 classes — do NOT blanket-swap the predicate): (a) DERIVED — relink's already-online refusal (the gate that made recovery impossible), the `shell cmd` wake-if-offline arm (which silently spooled to a corpse), the drive drop-if-offline branch, `shelldisc::discover` (the single source of BOTH `shell list` renders, text + --json), and the activity fan-out's online filter; (b) RAW status, deliberately — `bind_shell_by_token`/`close_shell` (the WRITERS) and `cascade_owner_edge`'s suspend-close arm, where routing through the resolver would SKIP the close that is itself the cleanup, removing a heal path; (c) RAW status, pending an operator ruling — the `shellwake::reconcile_once` watcher-eligibility read: making it liveness-aware would let a dead persistent instance's watcher relaunch the binary spontaneously (~1 tick), which is the correct crash self-heal but the WRONG mid-deploy behavior on Windows, where an operator kills the process precisely to free the exe for overwrite and spt-core would re-lock it under them (flynn's forcing case: shared install dir ⇒ 'kill the process' is a routine deploy step). This req therefore delivers NO spontaneous relaunch: recovery is demand-driven (an unblocked `relink`, or a `shell cmd` that wakes) and `shell list` tells the truth. LOCALITY SYMMETRY (field-caught by flynn's leg-2 run, 2026-07-25): 'a shell cmd that wakes' holds for BOTH the local CLI cmd and the cross-node serve — at mint the wake arm lived in the SHELL_LINK_CMD serve handler only (module docs scoped wake-if-offline to remote cmd), so a LOCAL cmd against a corpse spooled silently and nothing woke, the exact accepted-happily/drained-by-nobody shape this req exists to kill; the arm is now the shared `linkhost::wake_if_offline_persistent`, called by both, and the derived status READ inside it is the same single census site as before (the census of 8 reads/3 classes is unchanged — the read moved, it did not multiply). ROTATION CARRIES THE DURABLE CHANNEL (flynn's frame-loss field catch, 2026-07-25, both trials): a spooled command frame is MAC-stamped under the link token current at SPOOL time, and the drain is a raw destructive passthrough — the shell verifies against its CURRENT key — so a relink's token mint orphaned every pending frame: drained to the woken binary, failed verify, correctly discarded BY THE ADAPTER, lost permanently; the wake-triggering command itself was the frame the wake lost (#23 armed the wake and never answered; #24/#19 spooled after rotation and drained in order). The fix is three-layered (todlando's A1/A2 race+crash hazards addressed at mint): (1) the token mint re-stamps all pending rows old-key→new-key (idempotent, crash-partial converges — an old-stamped remainder is converted by the next rotation or drain); (2) the rotated-out token is STASHED (`link.token.retired`, never a live credential — bind resolves only the parked file) so (3) the drain paths give any race straggler a second-chance re-stamp at delivery (`restamp_for_drain`), while frames verifying under neither key pass through untouched for the adapter to refuse exactly as before. Rows are selected by MAC verification against the threaded new key, never by token-snapshot equality (the D-2 class). MOCK CONFORMANCE IS A PROPERTY OF THE RIG, not a patch (todlando A4): mock-shell MUST verify inbound frame MACs exactly as the public contract demands of a real adapter and drop failures loudly — a mock that accepts what the field rejects is a broken rig, and that exact divergence (credulous mock) is how the frame loss passed the e2e while failing in the field. The adapter-side discard behavior is CORRECT and must never be softened to paper over the spool side. Relink additionally probes LOCALLY rather than trusting a daemon sweep, so recovery holds with the daemon down. RECOVERY PRESERVES CONSUMER STATE (the property consumers actually depend on, flynn 2026-07-25): 'same canonical id, same perch' exists so that state a consumer PERSISTED IN THE PERCH survives the recovery — an adapter's repo binding, a scanner's cursor. The teardown+spawn workaround destroyed exactly that, and its worst cost was SILENT, not the rename: alchemy's tag cursor re-baselines at the digest tip, so tags written between the kill and the re-bind are never scanned — not failed-and-retried, just never seen. A loud failure gets retried; a silent one does not. Gate: int — force-kill a bound persistent instance's process, then prove (1) `shell list` reads offline, (2) `relink` succeeds instead of SHELL_ALREADY_ONLINE and the SAME canonical id + perch survive, carrying perch-persisted consumer state with them (no teardown+spawn, no id churn, no re-baselined cursor), (3) no spontaneous relaunch occurs while the instance sits dead and undriven. FIELD VERDICT — PASS END-TO-END (flynn, alchemy-0, delivered 2026-07-26; v0.43.0, counter 77): every gate leg held in the field, on a record the pre-fix code had already poisoned. (1) `shell list` read OFFLINE while the on-disk info.json still said status=online — the daemon DERIVED offline from the corpse pid (29036 absent from the process table); the record was never corrected and did not need to be. (2) relink ADMITTED, no SHELL_ALREADY_ONLINE — verbatim SHELL_RELINKED:alchemy-0 owner=flynn pid=38644 status=offline, list online thereafter. (3) identity/state integrity: same canonical id, same owner, same perch; repo binding byte-identical (token_provenance=gh-cli); armed=true preserved; no spontaneous relaunch across the ~6.5h dead window. CURSOR SCOPING, ruled at closure (doyle 2026-07-26) — the one non-byte-identical field: the tag cursor moved 206158430541→210453397553 (gen:seq 48:333→49:49) because the recovery crossed a DAEMON restart that slid the retained digest window past the armed cursor. NOT a gap and NOT this req's property failing: spt-core raised after_predates_window and the consumer took its specced armed-cursor branch (alchemy REQ-TAG-SCANNER missed-rows leg — warn the owner, never silently re-baseline an armed cursor; alchemy src/tags.rs, two unit tests) — the FIRST FIELD FIRING of a path previously exercised only by unit tests. The 'no re-baselined cursor' gate property is hereby scoped: byte-identity holds across SHELL death within one daemon generation (the prior LEG 5 measurement, one daemon instance, uncontradicted — different scenario, generation never moved); across a daemon restart that slides the window the contract is DETECT-AND-ANNOUNCE, not preserve — corroborated independently by a second record's cursor decomposing under the same gen:seq scheme (4294967486 = 1:190). Practical exposure in this event: nil (every agent stood down through the gap; no tag traffic to miss). SECOND SPECIMEN HELD, not spent (doyle ruling 2026-07-26): liam's record — precondition verified by flynn (pid 35464 a CLEAN corpse, not recycled, so the accepted-at-mint recycled-pid caveat does not apply; same poisoned status=online shape; binding intact; cursor armed at 4294967486) — is deliberately NOT relinked while its owner is absent: the admit gate is already field-proven, a relink measurably re-baselines the cursor across a daemon-restart boundary, and liam's is the only untouched specimen with the longer (~8.5h) gap — spending it would destroy the cursor datum liam's own return produces, to buy a redundant second sample of a gate already proven to admit. It waits for liam. SPECIMEN HARVESTED (liam's own return, 2026-07-26 — operator-authorized endpoint start executed by doyle; pre-state snapshotted by doyle AND independently re-verified on disk by liam before touching anything): (1) relink ADMITTED at the ~8.5h gap — verbatim SHELL_RELINKED:alchemy-0 owner=liam pid=47608 status=offline (online at bind); the poisoned record did not refuse; info.json online is now TRUE. (2) integrity FULL PASS: id unchanged (no new mint slot), perch onlined at bind, repo binding byte-identical (token_provenance gh-cli), and the ROTATION-CARRIES-THE-DURABLE-CHANNEL machinery observed live in the field for the first time — link.token.retired present beside the fresh mint, and a post-relink round trip proven end-to-end (shell cmd spooled -> engine executed -> reply home on the owner's perch), not merely an outbound spool. (3) cursor, the sharpest datum of the harvest: BYTE-IDENTICAL through the relink itself (4294967486 armed at pid-change instant, doyle's file watch) — the relink preserves; the SCANNER moves. First scan re-baselined 1:190 -> 2:0 silently, and liam PROVED no-fire-by-precondition rather than assuming: the daemon restart bumped the generation but EVICTED NOTHING (window floor 4294967464 < cursor 4294967486, every gen-1 row past the cursor still retained), so after_predates_window is correctly false at every link of the chain (filter_after floor test -> emit-only-when-true -> unwrap_or(false)) and the missed-rows announce had no precondition to fire on. Flynn's earlier gen-bump reading is refined by this: a restart alone does not slide the window; flynn's announce fired because HIS window had genuinely slid. Scope note carried: a valid negative — the fix's announce chain verified link-by-link to contract on a specimen where it correctly stayed quiet. RESIDUE from the harvest (liam's find, alchemy lane, no core REQ): permanently-unsealable turns from a dark session are jumped by scanner cursor advance with no possible missed-rows notice (a generation bump is not a slide); ruled scanner-side announce for input-bearing null-seq jumps, pseudo-turns jump silently by design; core's per-turn input/input_seq/partial already suffice to discriminate.",
2026-07-26T22:33:03.0298076Z       "requiredStages": [
2026-07-26T22:33:03.0298173Z         "doc",
2026-07-26T22:33:03.0298259Z         "impl",
2026-07-26T22:33:03.0298354Z         "unit",
2026-07-26T22:33:03.0298448Z         "int"
2026-07-26T22:33:03.0298536Z       ],
2026-07-26T22:33:03.0298625Z       "stages": {
2026-07-26T22:33:03.0298706Z         "doc": {
2026-07-26T22:33:03.0298802Z           "complete": true,
2026-07-26T22:33:03.0298893Z           "evidence": [
2026-07-26T22:33:03.0299049Z             {
2026-07-26T22:33:03.0299165Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0299245Z               "line": 811
2026-07-26T22:33:03.0299427Z             }
2026-07-26T22:33:03.0299509Z           ]
2026-07-26T22:33:03.0299588Z         },
2026-07-26T22:33:03.0299683Z         "impl": {
2026-07-26T22:33:03.0299773Z           "complete": true,
2026-07-26T22:33:03.0299870Z           "evidence": [
2026-07-26T22:33:03.0299950Z             {
2026-07-26T22:33:03.0300074Z               "path": "crates/spt-daemon/src/activity.rs",
2026-07-26T22:33:03.0300175Z               "line": 143
2026-07-26T22:33:03.0300251Z             },
2026-07-26T22:33:03.0300336Z             {
2026-07-26T22:33:03.0300452Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.0300546Z               "line": 357
2026-07-26T22:33:03.0300627Z             },
2026-07-26T22:33:03.0300708Z             {
2026-07-26T22:33:03.0300832Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.0301022Z               "line": 418
2026-07-26T22:33:03.0301100Z             },
2026-07-26T22:33:03.0301185Z             {
2026-07-26T22:33:03.0301318Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.0301401Z               "line": 462
2026-07-26T22:33:03.0301495Z             },
2026-07-26T22:33:03.0301575Z             {
2026-07-26T22:33:03.0301700Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.0301782Z               "line": 596
2026-07-26T22:33:03.0301871Z             },
2026-07-26T22:33:03.0301947Z             {
2026-07-26T22:33:03.0302066Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-07-26T22:33:03.0302146Z               "line": 184
2026-07-26T22:33:03.0302226Z             },
2026-07-26T22:33:03.0302306Z             {
2026-07-26T22:33:03.0302436Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-07-26T22:33:03.0302526Z               "line": 207
2026-07-26T22:33:03.0302607Z             },
2026-07-26T22:33:03.0302684Z             {
2026-07-26T22:33:03.0302808Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-07-26T22:33:03.0302893Z               "line": 269
2026-07-26T22:33:03.0302984Z             },
2026-07-26T22:33:03.0303066Z             {
2026-07-26T22:33:03.0303189Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-07-26T22:33:03.0303275Z               "line": 75
2026-07-26T22:33:03.0303356Z             },
2026-07-26T22:33:03.0303437Z             {
2026-07-26T22:33:03.0303560Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.0303638Z               "line": 53
2026-07-26T22:33:03.0303723Z             },
2026-07-26T22:33:03.0303800Z             {
2026-07-26T22:33:03.0303923Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.0304000Z               "line": 161
2026-07-26T22:33:03.0304085Z             },
2026-07-26T22:33:03.0304166Z             {
2026-07-26T22:33:03.0304291Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.0304381Z               "line": 503
2026-07-26T22:33:03.0304462Z             },
2026-07-26T22:33:03.0304553Z             {
2026-07-26T22:33:03.0304673Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:03.0304757Z               "line": 144
2026-07-26T22:33:03.0304842Z             },
2026-07-26T22:33:03.0304919Z             {
2026-07-26T22:33:03.0305041Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:03.0305140Z               "line": 166
2026-07-26T22:33:03.0305227Z             },
2026-07-26T22:33:03.0305308Z             {
2026-07-26T22:33:03.0305417Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:03.0305517Z               "line": 176
2026-07-26T22:33:03.0305590Z             },
2026-07-26T22:33:03.0305675Z             {
2026-07-26T22:33:03.0305788Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.0305875Z               "line": 816
2026-07-26T22:33:03.0305966Z             },
2026-07-26T22:33:03.0306042Z             {
2026-07-26T22:33:03.0306161Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.0306318Z               "line": 247
2026-07-26T22:33:03.0306399Z             },
2026-07-26T22:33:03.0306480Z             {
2026-07-26T22:33:03.0306586Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0306680Z               "line": 12299
2026-07-26T22:33:03.0306757Z             }
2026-07-26T22:33:03.0306834Z           ]
2026-07-26T22:33:03.0306915Z         },
2026-07-26T22:33:03.0307014Z         "int": {
2026-07-26T22:33:03.0307115Z           "complete": true,
2026-07-26T22:33:03.0307216Z           "evidence": [
2026-07-26T22:33:03.0307290Z             {
2026-07-26T22:33:03.0307437Z               "path": "crates/spt/tests/shell_stale_online_e2e.rs",
2026-07-26T22:33:03.0307524Z               "line": 24
2026-07-26T22:33:03.0307603Z             }
2026-07-26T22:33:03.0307688Z           ]
2026-07-26T22:33:03.0307841Z         },
2026-07-26T22:33:03.0307927Z         "unit": {
2026-07-26T22:33:03.0308031Z           "complete": true,
2026-07-26T22:33:03.0308122Z           "evidence": [
2026-07-26T22:33:03.0308222Z             {
2026-07-26T22:33:03.0308336Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.0308428Z               "line": 869
2026-07-26T22:33:03.0308513Z             },
2026-07-26T22:33:03.0308594Z             {
2026-07-26T22:33:03.0308699Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.0308795Z               "line": 918
2026-07-26T22:33:03.0308880Z             },
2026-07-26T22:33:03.0309047Z             {
2026-07-26T22:33:03.0309166Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-07-26T22:33:03.0309262Z               "line": 398
2026-07-26T22:33:03.0309338Z             },
2026-07-26T22:33:03.0309415Z             {
2026-07-26T22:33:03.0309538Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-07-26T22:33:03.0309629Z               "line": 320
2026-07-26T22:33:03.0309711Z             },
2026-07-26T22:33:03.0309792Z             {
2026-07-26T22:33:03.0309905Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.0310002Z               "line": 891
2026-07-26T22:33:03.0310083Z             },
2026-07-26T22:33:03.0310176Z             {
2026-07-26T22:33:03.0310290Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:03.0310386Z               "line": 373
2026-07-26T22:33:03.0310468Z             },
2026-07-26T22:33:03.0310548Z             {
2026-07-26T22:33:03.0310667Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:03.0310763Z               "line": 410
2026-07-26T22:33:03.0310844Z             }
2026-07-26T22:33:03.0310929Z           ]
2026-07-26T22:33:03.0311007Z         }
2026-07-26T22:33:03.0311087Z       }
2026-07-26T22:33:03.0311182Z     },
2026-07-26T22:33:03.0311258Z     {
2026-07-26T22:33:03.0311387Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-07-26T22:33:03.0311573Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-07-26T22:33:03.0311722Z       "requiredStages": [
2026-07-26T22:33:03.0311850Z         "impl",
2026-07-26T22:33:03.0311956Z         "unit"
2026-07-26T22:33:03.0312036Z       ],
2026-07-26T22:33:03.0312126Z       "stages": {
2026-07-26T22:33:03.0312207Z         "doc": {
2026-07-26T22:33:03.0312309Z           "complete": false,
2026-07-26T22:33:03.0312402Z           "evidence": []
2026-07-26T22:33:03.0312483Z         },
2026-07-26T22:33:03.0312568Z         "impl": {
2026-07-26T22:33:03.0312659Z           "complete": true,
2026-07-26T22:33:03.0312753Z           "evidence": [
2026-07-26T22:33:03.0312833Z             {
2026-07-26T22:33:03.0312962Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.0313054Z               "line": 62
2026-07-26T22:33:03.0313129Z             },
2026-07-26T22:33:03.0313219Z             {
2026-07-26T22:33:03.0313349Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.0313444Z               "line": 71
2026-07-26T22:33:03.0313525Z             },
2026-07-26T22:33:03.0313716Z             {
2026-07-26T22:33:03.0313840Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.0313931Z               "line": 80
2026-07-26T22:33:03.0314007Z             },
2026-07-26T22:33:03.0314087Z             {
2026-07-26T22:33:03.0314213Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.0314312Z               "line": 88
2026-07-26T22:33:03.0314393Z             },
2026-07-26T22:33:03.0314479Z             {
2026-07-26T22:33:03.0314598Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0314698Z               "line": 33
2026-07-26T22:33:03.0314779Z             },
2026-07-26T22:33:03.0314866Z             {
2026-07-26T22:33:03.0314979Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0315074Z               "line": 65
2026-07-26T22:33:03.0315266Z             },
2026-07-26T22:33:03.0315355Z             {
2026-07-26T22:33:03.0315464Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0315569Z               "line": 74
2026-07-26T22:33:03.0315653Z             },
2026-07-26T22:33:03.0315734Z             {
2026-07-26T22:33:03.0315849Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0315935Z               "line": 93
2026-07-26T22:33:03.0316029Z             },
2026-07-26T22:33:03.0316106Z             {
2026-07-26T22:33:03.0316221Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0316311Z               "line": 102
2026-07-26T22:33:03.0316401Z             },
2026-07-26T22:33:03.0316474Z             {
2026-07-26T22:33:03.0316584Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0316663Z               "line": 111
2026-07-26T22:33:03.0316750Z             },
2026-07-26T22:33:03.0316822Z             {
2026-07-26T22:33:03.0316936Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0317031Z               "line": 122
2026-07-26T22:33:03.0317108Z             },
2026-07-26T22:33:03.0317189Z             {
2026-07-26T22:33:03.0317312Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0317399Z               "line": 140
2026-07-26T22:33:03.0317480Z             },
2026-07-26T22:33:03.0317555Z             {
2026-07-26T22:33:03.0317680Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0317771Z               "line": 153
2026-07-26T22:33:03.0317851Z             },
2026-07-26T22:33:03.0317926Z             {
2026-07-26T22:33:03.0318041Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0318126Z               "line": 163
2026-07-26T22:33:03.0318215Z             },
2026-07-26T22:33:03.0318286Z             {
2026-07-26T22:33:03.0318406Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0318492Z               "line": 172
2026-07-26T22:33:03.0318572Z             },
2026-07-26T22:33:03.0318658Z             {
2026-07-26T22:33:03.0318773Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0318868Z               "line": 183
2026-07-26T22:33:03.0319022Z             },
2026-07-26T22:33:03.0319107Z             {
2026-07-26T22:33:03.0319220Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0319312Z               "line": 191
2026-07-26T22:33:03.0319398Z             },
2026-07-26T22:33:03.0319474Z             {
2026-07-26T22:33:03.0319592Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0319680Z               "line": 200
2026-07-26T22:33:03.0319755Z             },
2026-07-26T22:33:03.0319845Z             {
2026-07-26T22:33:03.0319951Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0320046Z               "line": 209
2026-07-26T22:33:03.0320127Z             },
2026-07-26T22:33:03.0320203Z             {
2026-07-26T22:33:03.0320310Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0320412Z               "line": 218
2026-07-26T22:33:03.0320489Z             },
2026-07-26T22:33:03.0320572Z             {
2026-07-26T22:33:03.0320889Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0320980Z               "line": 230
2026-07-26T22:33:03.0321056Z             },
2026-07-26T22:33:03.0321141Z             {
2026-07-26T22:33:03.0321251Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0321347Z               "line": 237
2026-07-26T22:33:03.0321427Z             },
2026-07-26T22:33:03.0321523Z             {
2026-07-26T22:33:03.0321624Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0321719Z               "line": 246
2026-07-26T22:33:03.0321799Z             },
2026-07-26T22:33:03.0321891Z             {
2026-07-26T22:33:03.0321991Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0322080Z               "line": 253
2026-07-26T22:33:03.0322157Z             },
2026-07-26T22:33:03.0322367Z             {
2026-07-26T22:33:03.0322482Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0322573Z               "line": 320
2026-07-26T22:33:03.0322657Z             },
2026-07-26T22:33:03.0322739Z             {
2026-07-26T22:33:03.0322840Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0322940Z               "line": 332
2026-07-26T22:33:03.0323015Z             },
2026-07-26T22:33:03.0323105Z             {
2026-07-26T22:33:03.0323205Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0323289Z               "line": 497
2026-07-26T22:33:03.0323374Z             }
2026-07-26T22:33:03.0323460Z           ]
2026-07-26T22:33:03.0323542Z         },
2026-07-26T22:33:03.0323632Z         "int": {
2026-07-26T22:33:03.0323731Z           "complete": false,
2026-07-26T22:33:03.0323833Z           "evidence": []
2026-07-26T22:33:03.0323914Z         },
2026-07-26T22:33:03.0323994Z         "unit": {
2026-07-26T22:33:03.0324090Z           "complete": true,
2026-07-26T22:33:03.0324195Z           "evidence": [
2026-07-26T22:33:03.0324280Z             {
2026-07-26T22:33:03.0324405Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0324505Z               "line": 620
2026-07-26T22:33:03.0324591Z             },
2026-07-26T22:33:03.0324671Z             {
2026-07-26T22:33:03.0324782Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0324877Z               "line": 661
2026-07-26T22:33:03.0324948Z             },
2026-07-26T22:33:03.0325039Z             {
2026-07-26T22:33:03.0325158Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0325253Z               "line": 674
2026-07-26T22:33:03.0325329Z             },
2026-07-26T22:33:03.0325421Z             {
2026-07-26T22:33:03.0325525Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0325606Z               "line": 760
2026-07-26T22:33:03.0325688Z             }
2026-07-26T22:33:03.0325769Z           ]
2026-07-26T22:33:03.0325858Z         }
2026-07-26T22:33:03.0325948Z       }
2026-07-26T22:33:03.0326024Z     },
2026-07-26T22:33:03.0326105Z     {
2026-07-26T22:33:03.0326213Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-07-26T22:33:03.0326414Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-07-26T22:33:03.0326514Z       "requiredStages": [
2026-07-26T22:33:03.0326608Z         "impl",
2026-07-26T22:33:03.0326686Z         "unit"
2026-07-26T22:33:03.0326767Z       ],
2026-07-26T22:33:03.0326847Z       "stages": {
2026-07-26T22:33:03.0326937Z         "doc": {
2026-07-26T22:33:03.0327039Z           "complete": false,
2026-07-26T22:33:03.0327134Z           "evidence": []
2026-07-26T22:33:03.0327219Z         },
2026-07-26T22:33:03.0327310Z         "impl": {
2026-07-26T22:33:03.0327401Z           "complete": true,
2026-07-26T22:33:03.0327496Z           "evidence": [
2026-07-26T22:33:03.0327582Z             {
2026-07-26T22:33:03.0327697Z               "path": "crates/spt-msg/src/ready.rs",
2026-07-26T22:33:03.0327791Z               "line": 201
2026-07-26T22:33:03.0327882Z             },
2026-07-26T22:33:03.0327955Z             {
2026-07-26T22:33:03.0328168Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.0328250Z               "line": 248
2026-07-26T22:33:03.0328341Z             }
2026-07-26T22:33:03.0328411Z           ]
2026-07-26T22:33:03.0328501Z         },
2026-07-26T22:33:03.0328582Z         "int": {
2026-07-26T22:33:03.0328682Z           "complete": false,
2026-07-26T22:33:03.0328770Z           "evidence": []
2026-07-26T22:33:03.0328870Z         },
2026-07-26T22:33:03.0329029Z         "unit": {
2026-07-26T22:33:03.0329132Z           "complete": true,
2026-07-26T22:33:03.0329262Z           "evidence": [
2026-07-26T22:33:03.0329352Z             {
2026-07-26T22:33:03.0329456Z               "path": "crates/spt-msg/src/ready.rs",
2026-07-26T22:33:03.0329548Z               "line": 323
2026-07-26T22:33:03.0329634Z             },
2026-07-26T22:33:03.0329819Z             {
2026-07-26T22:33:03.0329953Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.0330034Z               "line": 1449
2026-07-26T22:33:03.0330144Z             },
2026-07-26T22:33:03.0330250Z             {
2026-07-26T22:33:03.0330377Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.0330477Z               "line": 1462
2026-07-26T22:33:03.0330559Z             }
2026-07-26T22:33:03.0330644Z           ]
2026-07-26T22:33:03.0330734Z         }
2026-07-26T22:33:03.0330812Z       }
2026-07-26T22:33:03.0330898Z     },
2026-07-26T22:33:03.0330977Z     {
2026-07-26T22:33:03.0331112Z       "id": "REQ-HAZARD-SPOOL-SENTINEL-CREATE-FAIL",
2026-07-26T22:33:03.0333299Z       "title": "A persistent failure to (re)create the spool has-messages sentinel is SURFACED, never silently swallowed. touch_has_messages (spt-store/src/spool.rs:147) does `let _ = File::create(...)` — a live field defect on ENLYZEAM left a stale .has-messages (2026-06-29) beside a fresh spool.db insert (06:59:17Z) in ONE directory, i.e. the create silently failed while rows accumulated (suspected read-only-attrib / share-lock). FIX: on File::create failure emit a LOUD-ONCE-per-perch stderr diagnostic naming the concrete io::Error (self-identifying regardless of kind); do NOT make it fatal (spool writes still proceed). (F-024C item 2, doyle)",
2026-07-26T22:33:03.0333537Z       "requiredStages": [
2026-07-26T22:33:03.0333627Z         "impl",
2026-07-26T22:33:03.0333717Z         "unit"
2026-07-26T22:33:03.0333789Z       ],
2026-07-26T22:33:03.0333873Z       "stages": {
2026-07-26T22:33:03.0333962Z         "doc": {
2026-07-26T22:33:03.0334054Z           "complete": false,
2026-07-26T22:33:03.0334150Z           "evidence": []
2026-07-26T22:33:03.0334235Z         },
2026-07-26T22:33:03.0334326Z         "impl": {
2026-07-26T22:33:03.0334417Z           "complete": true,
2026-07-26T22:33:03.0334516Z           "evidence": [
2026-07-26T22:33:03.0334597Z             {
2026-07-26T22:33:03.0334713Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.0334812Z               "line": 167
2026-07-26T22:33:03.0334902Z             },
2026-07-26T22:33:03.0334984Z             {
2026-07-26T22:33:03.0335103Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.0335184Z               "line": 179
2026-07-26T22:33:03.0335265Z             }
2026-07-26T22:33:03.0335347Z           ]
2026-07-26T22:33:03.0335427Z         },
2026-07-26T22:33:03.0335508Z         "int": {
2026-07-26T22:33:03.0335599Z           "complete": false,
2026-07-26T22:33:03.0335690Z           "evidence": []
2026-07-26T22:33:03.0335780Z         },
2026-07-26T22:33:03.0335866Z         "unit": {
2026-07-26T22:33:03.0335962Z           "complete": true,
2026-07-26T22:33:03.0336057Z           "evidence": [
2026-07-26T22:33:03.0336147Z             {
2026-07-26T22:33:03.0336262Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.0336353Z               "line": 1341
2026-07-26T22:33:03.0336438Z             }
2026-07-26T22:33:03.0336527Z           ]
2026-07-26T22:33:03.0336609Z         }
2026-07-26T22:33:03.0336698Z       }
2026-07-26T22:33:03.0336778Z     },
2026-07-26T22:33:03.0337008Z     {
2026-07-26T22:33:03.0337126Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-07-26T22:33:03.0337270Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-07-26T22:33:03.0337355Z       "requiredStages": [
2026-07-26T22:33:03.0337441Z         "impl",
2026-07-26T22:33:03.0337531Z         "unit"
2026-07-26T22:33:03.0337613Z       ],
2026-07-26T22:33:03.0337704Z       "stages": {
2026-07-26T22:33:03.0337779Z         "doc": {
2026-07-26T22:33:03.0337880Z           "complete": false,
2026-07-26T22:33:03.0337975Z           "evidence": []
2026-07-26T22:33:03.0338065Z         },
2026-07-26T22:33:03.0338151Z         "impl": {
2026-07-26T22:33:03.0338233Z           "complete": true,
2026-07-26T22:33:03.0338323Z           "evidence": [
2026-07-26T22:33:03.0338414Z             {
2026-07-26T22:33:03.0338529Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0338699Z               "line": 130
2026-07-26T22:33:03.0338786Z             },
2026-07-26T22:33:03.0338877Z             {
2026-07-26T22:33:03.0339080Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.0339171Z               "line": 593
2026-07-26T22:33:03.0339251Z             }
2026-07-26T22:33:03.0339340Z           ]
2026-07-26T22:33:03.0339421Z         },
2026-07-26T22:33:03.0339526Z         "int": {
2026-07-26T22:33:03.0339617Z           "complete": false,
2026-07-26T22:33:03.0339721Z           "evidence": []
2026-07-26T22:33:03.0339803Z         },
2026-07-26T22:33:03.0339884Z         "unit": {
2026-07-26T22:33:03.0339979Z           "complete": true,
2026-07-26T22:33:03.0340069Z           "evidence": [
2026-07-26T22:33:03.0340151Z             {
2026-07-26T22:33:03.0340265Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.0340355Z               "line": 772
2026-07-26T22:33:03.0340480Z             }
2026-07-26T22:33:03.0340560Z           ]
2026-07-26T22:33:03.0340651Z         }
2026-07-26T22:33:03.0340732Z       }
2026-07-26T22:33:03.0340833Z     },
2026-07-26T22:33:03.0340909Z     {
2026-07-26T22:33:03.0341037Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-07-26T22:33:03.0341204Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-07-26T22:33:03.0341299Z       "requiredStages": [
2026-07-26T22:33:03.0341387Z         "impl",
2026-07-26T22:33:03.0341482Z         "unit"
2026-07-26T22:33:03.0341566Z       ],
2026-07-26T22:33:03.0341663Z       "stages": {
2026-07-26T22:33:03.0341739Z         "doc": {
2026-07-26T22:33:03.0341839Z           "complete": false,
2026-07-26T22:33:03.0341928Z           "evidence": []
2026-07-26T22:33:03.0342023Z         },
2026-07-26T22:33:03.0342110Z         "impl": {
2026-07-26T22:33:03.0342195Z           "complete": true,
2026-07-26T22:33:03.0342285Z           "evidence": [
2026-07-26T22:33:03.0345902Z             {
2026-07-26T22:33:03.0346087Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.0346183Z               "line": 1352
2026-07-26T22:33:03.0346269Z             },
2026-07-26T22:33:03.0346354Z             {
2026-07-26T22:33:03.0346474Z               "path": "crates/spt-live/src/signoff.rs",
2026-07-26T22:33:03.0346579Z               "line": 28
2026-07-26T22:33:03.0346659Z             }
2026-07-26T22:33:03.0346731Z           ]
2026-07-26T22:33:03.0346818Z         },
2026-07-26T22:33:03.0346904Z         "int": {
2026-07-26T22:33:03.0346998Z           "complete": false,
2026-07-26T22:33:03.0347087Z           "evidence": []
2026-07-26T22:33:03.0347164Z         },
2026-07-26T22:33:03.0347244Z         "unit": {
2026-07-26T22:33:03.0347343Z           "complete": true,
2026-07-26T22:33:03.0347423Z           "evidence": [
2026-07-26T22:33:03.0347505Z             {
2026-07-26T22:33:03.0347629Z               "path": "crates/spt-live/src/signoff.rs",
2026-07-26T22:33:03.0347719Z               "line": 229
2026-07-26T22:33:03.0347806Z             }
2026-07-26T22:33:03.0347887Z           ]
2026-07-26T22:33:03.0347967Z         }
2026-07-26T22:33:03.0348052Z       }
2026-07-26T22:33:03.0348296Z     },
2026-07-26T22:33:03.0348387Z     {
2026-07-26T22:33:03.0348497Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-07-26T22:33:03.0348630Z       "title": "Stdin session_id precedence over env (2.2)",
2026-07-26T22:33:03.0348726Z       "requiredStages": [],
2026-07-26T22:33:03.0348807Z       "stages": {
2026-07-26T22:33:03.0348888Z         "doc": {
2026-07-26T22:33:03.0349075Z           "complete": false,
2026-07-26T22:33:03.0349151Z           "evidence": []
2026-07-26T22:33:03.0349236Z         },
2026-07-26T22:33:03.0349317Z         "impl": {
2026-07-26T22:33:03.0349414Z           "complete": false,
2026-07-26T22:33:03.0349494Z           "evidence": []
2026-07-26T22:33:03.0349574Z         },
2026-07-26T22:33:03.0349654Z         "int": {
2026-07-26T22:33:03.0349750Z           "complete": false,
2026-07-26T22:33:03.0349937Z           "evidence": []
2026-07-26T22:33:03.0350024Z         },
2026-07-26T22:33:03.0350106Z         "unit": {
2026-07-26T22:33:03.0350201Z           "complete": false,
2026-07-26T22:33:03.0350300Z           "evidence": []
2026-07-26T22:33:03.0350392Z         }
2026-07-26T22:33:03.0350468Z       }
2026-07-26T22:33:03.0350544Z     },
2026-07-26T22:33:03.0350625Z     {
2026-07-26T22:33:03.0350764Z       "id": "REQ-HAZARD-STOP-PATH-PSYCHE-ORPHAN-REAP",
2026-07-26T22:33:03.0353747Z       "title": "Endpoint-stop and brain-death reconcile MUST reap a brain-less perch's orphan detached Psyche via the cmdline-scoped guard (`psyche_orphan_should_reap`) — the handle-reap (`LiveSet::stop_host`, REQ-HAZARD-UNHOST-PSYCHE-REAP) CANNOT, because the owning brain is gone (its `psyche_child` handle died with it), and the brain-start scoped-reap (REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP) never fires for a perch being STOPPED rather than re-hosted. So the live-host calls the scoped reap after `stop_host` at the reconcile stop-side AND in `confirm_residency_or_unhost`. Preserves fail-safe-decline (pid-alive AND exe-basename==psyche-program AND cmdline contains `<id>-psyche`; any unreadable signal DECLINES — a missed dup is bounded, a wrong-kill is catastrophic). This is the orphan-leak half of the perri F-010xF-015 field bug (the unsupervised install-dir Psyche that locked an update); the other half is the psyche own-copy (ADR-0025 amendment). (v0.13.2 W3 (a))",
2026-07-26T22:33:03.0353852Z       "requiredStages": [],
2026-07-26T22:33:03.0353929Z       "stages": {
2026-07-26T22:33:03.0354009Z         "doc": {
2026-07-26T22:33:03.0354104Z           "complete": true,
2026-07-26T22:33:03.0354192Z           "evidence": [
2026-07-26T22:33:03.0354263Z             {
2026-07-26T22:33:03.0354381Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0354458Z               "line": 857
2026-07-26T22:33:03.0354549Z             },
2026-07-26T22:33:03.0354629Z             {
2026-07-26T22:33:03.0354809Z               "path": "docs/adr/0025-live-daemon-coordinated-adapter-update.md",
2026-07-26T22:33:03.0354895Z               "line": 45
2026-07-26T22:33:03.0354984Z             }
2026-07-26T22:33:03.0355069Z           ]
2026-07-26T22:33:03.0355150Z         },
2026-07-26T22:33:03.0355232Z         "impl": {
2026-07-26T22:33:03.0355326Z           "complete": false,
2026-07-26T22:33:03.0355417Z           "evidence": []
2026-07-26T22:33:03.0355503Z         },
2026-07-26T22:33:03.0355584Z         "int": {
2026-07-26T22:33:03.0355674Z           "complete": false,
2026-07-26T22:33:03.0355755Z           "evidence": []
2026-07-26T22:33:03.0355838Z         },
2026-07-26T22:33:03.0355913Z         "unit": {
2026-07-26T22:33:03.0356013Z           "complete": false,
2026-07-26T22:33:03.0356095Z           "evidence": []
2026-07-26T22:33:03.0356186Z         }
2026-07-26T22:33:03.0356262Z       }
2026-07-26T22:33:03.0356347Z     },
2026-07-26T22:33:03.0356429Z     {
2026-07-26T22:33:03.0356552Z       "id": "REQ-HAZARD-STOP-RESPAWN-CONVOY",
2026-07-26T22:33:03.0357855Z       "title": "KNOWN-HAZARDS 7.52: an operator stop outranks every implicit ensure — no convenience path resurrects what the operator just killed. The hazard-conformance twin of REQ-ENSURE-DAEMON-STOP-INHIBIT: its int-stage convoy rig IS this hazard's required test (stop under api-call storm -> down + zero respawns + honest refusal; start clears; one-daemon race). Registered separately per CLAUDE.md rule 4 — evidence may tag the same rig.",
2026-07-26T22:33:03.0358070Z       "requiredStages": [
2026-07-26T22:33:03.0358152Z         "doc",
2026-07-26T22:33:03.0358222Z         "int"
2026-07-26T22:33:03.0358313Z       ],
2026-07-26T22:33:03.0358400Z       "stages": {
2026-07-26T22:33:03.0358485Z         "doc": {
2026-07-26T22:33:03.0358580Z           "complete": true,
2026-07-26T22:33:03.0358676Z           "evidence": [
2026-07-26T22:33:03.0358761Z             {
2026-07-26T22:33:03.0358875Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0359039Z               "line": 759
2026-07-26T22:33:03.0359214Z             }
2026-07-26T22:33:03.0359296Z           ]
2026-07-26T22:33:03.0359377Z         },
2026-07-26T22:33:03.0359462Z         "impl": {
2026-07-26T22:33:03.0359562Z           "complete": false,
2026-07-26T22:33:03.0359645Z           "evidence": []
2026-07-26T22:33:03.0359730Z         },
2026-07-26T22:33:03.0359810Z         "int": {
2026-07-26T22:33:03.0359906Z           "complete": true,
2026-07-26T22:33:03.0359979Z           "evidence": [
2026-07-26T22:33:03.0360068Z             {
2026-07-26T22:33:03.0360195Z               "path": "crates/spt/tests/daemon_stop_convoy_e2e.rs",
2026-07-26T22:33:03.0360276Z               "line": 119
2026-07-26T22:33:03.0360348Z             }
2026-07-26T22:33:03.0360432Z           ]
2026-07-26T22:33:03.0360512Z         },
2026-07-26T22:33:03.0360589Z         "unit": {
2026-07-26T22:33:03.0360680Z           "complete": false,
2026-07-26T22:33:03.0360775Z           "evidence": []
2026-07-26T22:33:03.0360855Z         }
2026-07-26T22:33:03.0360942Z       }
2026-07-26T22:33:03.0361028Z     },
2026-07-26T22:33:03.0361108Z     {
2026-07-26T22:33:03.0361213Z       "id": "REQ-HAZARD-STORE-INIT-RACE",
2026-07-26T22:33:03.0364312Z       "title": "Concurrent first-touch of ONE fresh BranchStore must ALL succeed, never a hard error. BranchStore::open_or_init (spt-store/src/branchstore.rs:47) is a TOCTOU: it gates on HEAD.exists() then runs a NON-ATOMIC init (`git init --bare` + `git config core.autocrlf false` + best-effort worktree.useRelativePaths). Two processes that both observe !HEAD.exists() on one fresh store race the `git config` step, which takes git's per-repo config.lock — the loser fails with 'could not lock config file …/config: File exists', an io::Error that strands the caller (the G3-gate pump.rs:442 flake, doyle-ledgered). FIX: make init race-tolerant — `git init --bare` is idempotent, and `git config` is idempotent (same bytes), so tolerate a concurrent winner (open-after-lose: if init errors but HEAD now exists, proceed as opened) and retry a transient config.lock collision a bounded number of times so the required core.autocrlf=false is guaranteed set. N concurrent open_or_init on ONE fresh dir must ALL return Ok. (F-025 wave, doyle Item 2)",
2026-07-26T22:33:03.0364518Z       "requiredStages": [
2026-07-26T22:33:03.0364632Z         "doc",
2026-07-26T22:33:03.0364747Z         "impl",
2026-07-26T22:33:03.0364856Z         "unit"
2026-07-26T22:33:03.0364937Z       ],
2026-07-26T22:33:03.0365028Z       "stages": {
2026-07-26T22:33:03.0365105Z         "doc": {
2026-07-26T22:33:03.0365203Z           "complete": true,
2026-07-26T22:33:03.0365284Z           "evidence": [
2026-07-26T22:33:03.0365369Z             {
2026-07-26T22:33:03.0365479Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0365558Z               "line": 560
2026-07-26T22:33:03.0365629Z             },
2026-07-26T22:33:03.0365711Z             {
2026-07-26T22:33:03.0365806Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0365896Z               "line": 873
2026-07-26T22:33:03.0365977Z             }
2026-07-26T22:33:03.0366054Z           ]
2026-07-26T22:33:03.0366140Z         },
2026-07-26T22:33:03.0366220Z         "impl": {
2026-07-26T22:33:03.0366431Z           "complete": true,
2026-07-26T22:33:03.0366512Z           "evidence": [
2026-07-26T22:33:03.0366592Z             {
2026-07-26T22:33:03.0366727Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.0366807Z               "line": 49
2026-07-26T22:33:03.0366897Z             },
2026-07-26T22:33:03.0366979Z             {
2026-07-26T22:33:03.0367098Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.0367179Z               "line": 72
2026-07-26T22:33:03.0367250Z             },
2026-07-26T22:33:03.0367333Z             {
2026-07-26T22:33:03.0367446Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.0367536Z               "line": 627
2026-07-26T22:33:03.0367624Z             },
2026-07-26T22:33:03.0367709Z             {
2026-07-26T22:33:03.0367899Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.0367991Z               "line": 645
2026-07-26T22:33:03.0368089Z             }
2026-07-26T22:33:03.0368165Z           ]
2026-07-26T22:33:03.0368256Z         },
2026-07-26T22:33:03.0368342Z         "int": {
2026-07-26T22:33:03.0368425Z           "complete": false,
2026-07-26T22:33:03.0368515Z           "evidence": []
2026-07-26T22:33:03.0368606Z         },
2026-07-26T22:33:03.0368702Z         "unit": {
2026-07-26T22:33:03.0368796Z           "complete": true,
2026-07-26T22:33:03.0368887Z           "evidence": [
2026-07-26T22:33:03.0369046Z             {
2026-07-26T22:33:03.0369173Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.0369265Z               "line": 684
2026-07-26T22:33:03.0369345Z             },
2026-07-26T22:33:03.0369426Z             {
2026-07-26T22:33:03.0369546Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.0369622Z               "line": 720
2026-07-26T22:33:03.0369708Z             }
2026-07-26T22:33:03.0369784Z           ]
2026-07-26T22:33:03.0369865Z         }
2026-07-26T22:33:03.0369956Z       }
2026-07-26T22:33:03.0370041Z     },
2026-07-26T22:33:03.0370123Z     {
2026-07-26T22:33:03.0370243Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-07-26T22:33:03.0370389Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-07-26T22:33:03.0370476Z       "requiredStages": [
2026-07-26T22:33:03.0370563Z         "impl",
2026-07-26T22:33:03.0370656Z         "unit"
2026-07-26T22:33:03.0370732Z       ],
2026-07-26T22:33:03.0370827Z       "stages": {
2026-07-26T22:33:03.0370908Z         "doc": {
2026-07-26T22:33:03.0371001Z           "complete": false,
2026-07-26T22:33:03.0371091Z           "evidence": []
2026-07-26T22:33:03.0371173Z         },
2026-07-26T22:33:03.0371255Z         "impl": {
2026-07-26T22:33:03.0371349Z           "complete": true,
2026-07-26T22:33:03.0371430Z           "evidence": [
2026-07-26T22:33:03.0371507Z             {
2026-07-26T22:33:03.0371612Z               "path": "crates/spt-live/src/turn.rs",
2026-07-26T22:33:03.0371711Z               "line": 19
2026-07-26T22:33:03.0371798Z             },
2026-07-26T22:33:03.0371888Z             {
2026-07-26T22:33:03.0371997Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0372079Z               "line": 930
2026-07-26T22:33:03.0372161Z             },
2026-07-26T22:33:03.0372241Z             {
2026-07-26T22:33:03.0372360Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0372447Z               "line": 966
2026-07-26T22:33:03.0372527Z             },
2026-07-26T22:33:03.0372623Z             {
2026-07-26T22:33:03.0372742Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0372837Z               "line": 1014
2026-07-26T22:33:03.0372922Z             },
2026-07-26T22:33:03.0373013Z             {
2026-07-26T22:33:03.0373124Z               "path": "crates/spt-store/src/gitrun.rs",
2026-07-26T22:33:03.0373213Z               "line": 15
2026-07-26T22:33:03.0373300Z             },
2026-07-26T22:33:03.0373382Z             {
2026-07-26T22:33:03.0373500Z               "path": "crates/spt-store/src/gitrun.rs",
2026-07-26T22:33:03.0373689Z               "line": 78
2026-07-26T22:33:03.0373776Z             },
2026-07-26T22:33:03.0373857Z             {
2026-07-26T22:33:03.0373970Z               "path": "crates/spt-store/src/gitrun.rs",
2026-07-26T22:33:03.0374052Z               "line": 151
2026-07-26T22:33:03.0374138Z             },
2026-07-26T22:33:03.0374223Z             {
2026-07-26T22:33:03.0374319Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0374401Z               "line": 8330
2026-07-26T22:33:03.0374481Z             }
2026-07-26T22:33:03.0374557Z           ]
2026-07-26T22:33:03.0374648Z         },
2026-07-26T22:33:03.0374725Z         "int": {
2026-07-26T22:33:03.0374824Z           "complete": false,
2026-07-26T22:33:03.0374905Z           "evidence": []
2026-07-26T22:33:03.0375083Z         },
2026-07-26T22:33:03.0375163Z         "unit": {
2026-07-26T22:33:03.0375248Z           "complete": true,
2026-07-26T22:33:03.0375340Z           "evidence": [
2026-07-26T22:33:03.0375435Z             {
2026-07-26T22:33:03.0375558Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0375651Z               "line": 1589
2026-07-26T22:33:03.0375726Z             },
2026-07-26T22:33:03.0375815Z             {
2026-07-26T22:33:03.0375919Z               "path": "crates/spt-store/src/gitrun.rs",
2026-07-26T22:33:03.0376010Z               "line": 197
2026-07-26T22:33:03.0376090Z             },
2026-07-26T22:33:03.0376170Z             {
2026-07-26T22:33:03.0376271Z               "path": "crates/spt-store/src/gitrun.rs",
2026-07-26T22:33:03.0376371Z               "line": 207
2026-07-26T22:33:03.0376452Z             }
2026-07-26T22:33:03.0376532Z           ]
2026-07-26T22:33:03.0376614Z         }
2026-07-26T22:33:03.0376695Z       }
2026-07-26T22:33:03.0376776Z     },
2026-07-26T22:33:03.0376861Z     {
2026-07-26T22:33:03.0376968Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-07-26T22:33:03.0377854Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-07-26T22:33:03.0377964Z       "requiredStages": [
2026-07-26T22:33:03.0378049Z         "impl",
2026-07-26T22:33:03.0378130Z         "unit"
2026-07-26T22:33:03.0378212Z       ],
2026-07-26T22:33:03.0378293Z       "stages": {
2026-07-26T22:33:03.0378373Z         "doc": {
2026-07-26T22:33:03.0378474Z           "complete": false,
2026-07-26T22:33:03.0378551Z           "evidence": []
2026-07-26T22:33:03.0378631Z         },
2026-07-26T22:33:03.0378711Z         "impl": {
2026-07-26T22:33:03.0378806Z           "complete": true,
2026-07-26T22:33:03.0378897Z           "evidence": [
2026-07-26T22:33:03.0379051Z             {
2026-07-26T22:33:03.0379166Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.0379257Z               "line": 192
2026-07-26T22:33:03.0379342Z             },
2026-07-26T22:33:03.0379442Z             {
2026-07-26T22:33:03.0379558Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.0379652Z               "line": 279
2026-07-26T22:33:03.0379733Z             }
2026-07-26T22:33:03.0379820Z           ]
2026-07-26T22:33:03.0379896Z         },
2026-07-26T22:33:03.0379977Z         "int": {
2026-07-26T22:33:03.0380067Z           "complete": false,
2026-07-26T22:33:03.0380154Z           "evidence": []
2026-07-26T22:33:03.0380239Z         },
2026-07-26T22:33:03.0380320Z         "unit": {
2026-07-26T22:33:03.0380411Z           "complete": true,
2026-07-26T22:33:03.0380502Z           "evidence": [
2026-07-26T22:33:03.0380582Z             {
2026-07-26T22:33:03.0380692Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.0380765Z               "line": 470
2026-07-26T22:33:03.0380854Z             },
2026-07-26T22:33:03.0380930Z             {
2026-07-26T22:33:03.0381031Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.0381240Z               "line": 526
2026-07-26T22:33:03.0381320Z             }
2026-07-26T22:33:03.0381396Z           ]
2026-07-26T22:33:03.0381477Z         }
2026-07-26T22:33:03.0381552Z       }
2026-07-26T22:33:03.0381632Z     },
2026-07-26T22:33:03.0381709Z     {
2026-07-26T22:33:03.0381829Z       "id": "REQ-HAZARD-TEARDOWN-DEADEND",
2026-07-26T22:33:03.0386466Z       "title": "TEARDOWN-AUTHORITY W1 HAZARD (ADR-0045 decision 8; hertz RCA 2 — hit doyle's OWN live production endpoint, recoverable only by out-of-band scoped kill): `endpoint stop` followed by `endpoint run --id <same>` MUST succeed (spawn or resume) and must NEVER answer ENDPOINT_CREATE_CONFLICT about a session that stop claimed to end. TRAP SHAPE (two individually-CORRECT behaviors composing into a lifecycle DEAD END with no in-band exit): (1) stop leaves the broker session alive (REQ-ENDPOINT-TEARDOWN-AUTHORITY), and (2) `endpoint run` correctly REFUSES ENDPOINT_CREATE_CONFLICT rather than silently reattaching (v0.37.0 no-silent-reattach rule, deliberately chosen). The survivor is therefore simultaneously what stop claims to have killed AND what run refuses to work around; with a wedged harness every in-band verb is exhausted (stop lies, run refuses, rc replays a dead PTY, rc --take controls a process that never answers). Neither behavior is individually wrong — the COMPOSITION is the hazard, so the regression must assert the composition, not either verb alone. This single assertion is the whole user-visible point of W1. Gate: impl — covered by the shared primitive; int — start a real broker host, hard-stop it, assert subtree + broker row gone, THEN `endpoint run --id <same>` SUCCEEDS (never CREATE_CONFLICT) and `endpoint run --resume <recorded sid>` creates a NEW PTY rather than rc-ing the old one; PLUS the durability leg — info stays offline + terminally-normalized across a bounded settle window (proves no re-bind by a survivor, the field rest_state=active finding made into an assertion).",
2026-07-26T22:33:03.0386697Z       "requiredStages": [
2026-07-26T22:33:03.0386778Z         "impl",
2026-07-26T22:33:03.0386859Z         "int"
2026-07-26T22:33:03.0386936Z       ],
2026-07-26T22:33:03.0387026Z       "stages": {
2026-07-26T22:33:03.0387097Z         "doc": {
2026-07-26T22:33:03.0387193Z           "complete": true,
2026-07-26T22:33:03.0387274Z           "evidence": [
2026-07-26T22:33:03.0387360Z             {
2026-07-26T22:33:03.0387470Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0387561Z               "line": 734
2026-07-26T22:33:03.0387646Z             },
2026-07-26T22:33:03.0387736Z             {
2026-07-26T22:33:03.0387875Z               "path": "docs/adr/0045-endpoint-teardown-authority.md",
2026-07-26T22:33:03.0387966Z               "line": 120
2026-07-26T22:33:03.0388051Z             }
2026-07-26T22:33:03.0388147Z           ]
2026-07-26T22:33:03.0388228Z         },
2026-07-26T22:33:03.0388318Z         "impl": {
2026-07-26T22:33:03.0388409Z           "complete": true,
2026-07-26T22:33:03.0388510Z           "evidence": [
2026-07-26T22:33:03.0388589Z             {
2026-07-26T22:33:03.0388710Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0388792Z               "line": 5954
2026-07-26T22:33:03.0388876Z             },
2026-07-26T22:33:03.0389029Z             {
2026-07-26T22:33:03.0389130Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0389215Z               "line": 7382
2026-07-26T22:33:03.0389300Z             },
2026-07-26T22:33:03.0389381Z             {
2026-07-26T22:33:03.0389485Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0389560Z               "line": 13311
2026-07-26T22:33:03.0389645Z             },
2026-07-26T22:33:03.0389731Z             {
2026-07-26T22:33:03.0389847Z               "path": "crates/spt/src/teardown.rs",
2026-07-26T22:33:03.0389940Z               "line": 137
2026-07-26T22:33:03.0390022Z             },
2026-07-26T22:33:03.0390104Z             {
2026-07-26T22:33:03.0390213Z               "path": "crates/spt/src/teardown.rs",
2026-07-26T22:33:03.0390414Z               "line": 172
2026-07-26T22:33:03.0390490Z             }
2026-07-26T22:33:03.0390574Z           ]
2026-07-26T22:33:03.0390656Z         },
2026-07-26T22:33:03.0390748Z         "int": {
2026-07-26T22:33:03.0390833Z           "complete": true,
2026-07-26T22:33:03.0390928Z           "evidence": [
2026-07-26T22:33:03.0391005Z             {
2026-07-26T22:33:03.0391166Z               "path": "crates/spt/tests/endpoint_teardown_authority_e2e.rs",
2026-07-26T22:33:03.0391248Z               "line": 416
2026-07-26T22:33:03.0391339Z             }
2026-07-26T22:33:03.0391419Z           ]
2026-07-26T22:33:03.0391591Z         },
2026-07-26T22:33:03.0391683Z         "unit": {
2026-07-26T22:33:03.0391814Z           "complete": true,
2026-07-26T22:33:03.0391938Z           "evidence": [
2026-07-26T22:33:03.0392211Z             {
2026-07-26T22:33:03.0392465Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.0392618Z               "line": 610
2026-07-26T22:33:03.0392760Z             },
2026-07-26T22:33:03.0392851Z             {
2026-07-26T22:33:03.0392962Z               "path": "crates/spt/src/teardown.rs",
2026-07-26T22:33:03.0393094Z               "line": 322
2026-07-26T22:33:03.0393189Z             }
2026-07-26T22:33:03.0393267Z           ]
2026-07-26T22:33:03.0393347Z         }
2026-07-26T22:33:03.0393428Z       }
2026-07-26T22:33:03.0393504Z     },
2026-07-26T22:33:03.0393587Z     {
2026-07-26T22:33:03.0393705Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-07-26T22:33:03.0397501Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-07-26T22:33:03.0397633Z       "requiredStages": [
2026-07-26T22:33:03.0397715Z         "impl",
2026-07-26T22:33:03.0397792Z         "unit",
2026-07-26T22:33:03.0397892Z         "int"
2026-07-26T22:33:03.0397972Z       ],
2026-07-26T22:33:03.0398064Z       "stages": {
2026-07-26T22:33:03.0398149Z         "doc": {
2026-07-26T22:33:03.0398239Z           "complete": false,
2026-07-26T22:33:03.0398330Z           "evidence": []
2026-07-26T22:33:03.0398421Z         },
2026-07-26T22:33:03.0398502Z         "impl": {
2026-07-26T22:33:03.0398606Z           "complete": true,
2026-07-26T22:33:03.0398694Z           "evidence": [
2026-07-26T22:33:03.0398774Z             {
2026-07-26T22:33:03.0398907Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.0399089Z               "line": 152
2026-07-26T22:33:03.0399169Z             },
2026-07-26T22:33:03.0399255Z             {
2026-07-26T22:33:03.0399394Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.0399488Z               "line": 186
2026-07-26T22:33:03.0399570Z             },
2026-07-26T22:33:03.0399657Z             {
2026-07-26T22:33:03.0399775Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.0399988Z               "line": 448
2026-07-26T22:33:03.0400073Z             },
2026-07-26T22:33:03.0400153Z             {
2026-07-26T22:33:03.0400272Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0400363Z               "line": 294
2026-07-26T22:33:03.0400444Z             },
2026-07-26T22:33:03.0400524Z             {
2026-07-26T22:33:03.0400645Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0400740Z               "line": 767
2026-07-26T22:33:03.0400820Z             },
2026-07-26T22:33:03.0400902Z             {
2026-07-26T22:33:03.0401016Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0401116Z               "line": 1022
2026-07-26T22:33:03.0401188Z             }
2026-07-26T22:33:03.0401274Z           ]
2026-07-26T22:33:03.0401449Z         },
2026-07-26T22:33:03.0401541Z         "int": {
2026-07-26T22:33:03.0401627Z           "complete": true,
2026-07-26T22:33:03.0401731Z           "evidence": [
2026-07-26T22:33:03.0401808Z             {
2026-07-26T22:33:03.0401994Z               "path": "crates/spt-daemon/tests/psyche_residency_expectation_e2e.rs",
2026-07-26T22:33:03.0402079Z               "line": 44
2026-07-26T22:33:03.0402166Z             },
2026-07-26T22:33:03.0402243Z             {
2026-07-26T22:33:03.0402417Z               "path": "crates/spt-daemon/tests/psyche_residency_expectation_e2e.rs",
2026-07-26T22:33:03.0402512Z               "line": 207
2026-07-26T22:33:03.0402589Z             }
2026-07-26T22:33:03.0402672Z           ]
2026-07-26T22:33:03.0402753Z         },
2026-07-26T22:33:03.0402844Z         "unit": {
2026-07-26T22:33:03.0402930Z           "complete": true,
2026-07-26T22:33:03.0403025Z           "evidence": [
2026-07-26T22:33:03.0403125Z             {
2026-07-26T22:33:03.0403273Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0403416Z               "line": 1393
2026-07-26T22:33:03.0403527Z             },
2026-07-26T22:33:03.0403622Z             {
2026-07-26T22:33:03.0403749Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0403832Z               "line": 1414
2026-07-26T22:33:03.0403926Z             },
2026-07-26T22:33:03.0404016Z             {
2026-07-26T22:33:03.0404142Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0404226Z               "line": 1486
2026-07-26T22:33:03.0404317Z             },
2026-07-26T22:33:03.0404413Z             {
2026-07-26T22:33:03.0404555Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0404636Z               "line": 1504
2026-07-26T22:33:03.0404723Z             },
2026-07-26T22:33:03.0404795Z             {
2026-07-26T22:33:03.0404903Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0404989Z               "line": 1528
2026-07-26T22:33:03.0405076Z             }
2026-07-26T22:33:03.0405148Z           ]
2026-07-26T22:33:03.0405236Z         }
2026-07-26T22:33:03.0405322Z       }
2026-07-26T22:33:03.0405403Z     },
2026-07-26T22:33:03.0405485Z     {
2026-07-26T22:33:03.0405603Z       "id": "REQ-HAZARD-THRASH-GUARD-BLIND",
2026-07-26T22:33:03.0406810Z       "title": "W3 (F030 hazard; paid-for: evidence #6, hall-bf ~12/min re-host NEVER tripped the C3(b) thrash guard — boot records were not ledger boundaries to the guard): the failure budget must count REAL attempts (ledger-derived: boot/turn records via the psyche perch ledger), not whatever it counted that let 12/min churn run invisibly. Red-first synthetic loop: a 12/min synthetic failure loop MUST trip the budget.",
2026-07-26T22:33:03.0406905Z       "requiredStages": [
2026-07-26T22:33:03.0406997Z         "doc",
2026-07-26T22:33:03.0407077Z         "impl",
2026-07-26T22:33:03.0407162Z         "unit"
2026-07-26T22:33:03.0407244Z       ],
2026-07-26T22:33:03.0407346Z       "stages": {
2026-07-26T22:33:03.0407425Z         "doc": {
2026-07-26T22:33:03.0407529Z           "complete": true,
2026-07-26T22:33:03.0407614Z           "evidence": [
2026-07-26T22:33:03.0407813Z             {
2026-07-26T22:33:03.0407927Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0408018Z               "line": 599
2026-07-26T22:33:03.0408099Z             },
2026-07-26T22:33:03.0408189Z             {
2026-07-26T22:33:03.0408290Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0408385Z               "line": 872
2026-07-26T22:33:03.0408466Z             }
2026-07-26T22:33:03.0408551Z           ]
2026-07-26T22:33:03.0408624Z         },
2026-07-26T22:33:03.0408714Z         "impl": {
2026-07-26T22:33:03.0408804Z           "complete": true,
2026-07-26T22:33:03.0408890Z           "evidence": [
2026-07-26T22:33:03.0409052Z             {
2026-07-26T22:33:03.0409176Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.0409263Z               "line": 1190
2026-07-26T22:33:03.0409476Z             }
2026-07-26T22:33:03.0409549Z           ]
2026-07-26T22:33:03.0409630Z         },
2026-07-26T22:33:03.0409724Z         "int": {
2026-07-26T22:33:03.0409825Z           "complete": false,
2026-07-26T22:33:03.0409916Z           "evidence": []
2026-07-26T22:33:03.0409996Z         },
2026-07-26T22:33:03.0410078Z         "unit": {
2026-07-26T22:33:03.0410174Z           "complete": true,
2026-07-26T22:33:03.0410260Z           "evidence": [
2026-07-26T22:33:03.0410339Z             {
2026-07-26T22:33:03.0410458Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.0410558Z               "line": 1675
2026-07-26T22:33:03.0410638Z             }
2026-07-26T22:33:03.0410713Z           ]
2026-07-26T22:33:03.0410789Z         }
2026-07-26T22:33:03.0410870Z       }
2026-07-26T22:33:03.0410942Z     },
2026-07-26T22:33:03.0411033Z     {
2026-07-26T22:33:03.0411191Z       "id": "REQ-HAZARD-TRANSLATE-FAULT-PERMANENT-DEATH",
2026-07-26T22:33:03.0413177Z       "title": "C-1 hazard (F029; paid-for: B6 + three-version checkpoint-wake breakage): a REAL translation fault (binary death — stdin write fail / stdout disconnect — or strike-budget exhaustion) must get a BOUNDED eager respawn (C3(b) give-up budget) instead of permanent death, and must stamp a PERCH-VISIBLE fault surface (mutate_info field, cleared on healthy respawn/commit) — TRANSLATION_FAULT is daemon-stderr-only today (the F-019 unread-channel trap; same honesty rule as F-027 ENDPOINT_SPAWN_FAIL). A real fault legitimately loses in-memory state (the wake is NOT carried across a real fault, unlike a mere commit-miss). See addendum C-1 (3)-(4).",
2026-07-26T22:33:03.0413284Z       "requiredStages": [
2026-07-26T22:33:03.0413365Z         "impl",
2026-07-26T22:33:03.0413452Z         "unit",
2026-07-26T22:33:03.0413538Z         "int"
2026-07-26T22:33:03.0413618Z       ],
2026-07-26T22:33:03.0413699Z       "stages": {
2026-07-26T22:33:03.0413777Z         "doc": {
2026-07-26T22:33:03.0413872Z           "complete": false,
2026-07-26T22:33:03.0413971Z           "evidence": []
2026-07-26T22:33:03.0414048Z         },
2026-07-26T22:33:03.0414138Z         "impl": {
2026-07-26T22:33:03.0414242Z           "complete": true,
2026-07-26T22:33:03.0414334Z           "evidence": [
2026-07-26T22:33:03.0414411Z             {
2026-07-26T22:33:03.0414543Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0414634Z               "line": 5059
2026-07-26T22:33:03.0414716Z             },
2026-07-26T22:33:03.0414791Z             {
2026-07-26T22:33:03.0414905Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.0414993Z               "line": 530
2026-07-26T22:33:03.0415069Z             }
2026-07-26T22:33:03.0415148Z           ]
2026-07-26T22:33:03.0415235Z         },
2026-07-26T22:33:03.0415317Z         "int": {
2026-07-26T22:33:03.0415407Z           "complete": true,
2026-07-26T22:33:03.0415487Z           "evidence": [
2026-07-26T22:33:03.0415569Z             {
2026-07-26T22:33:03.0415718Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.0415811Z               "line": 1960
2026-07-26T22:33:03.0416007Z             },
2026-07-26T22:33:03.0416083Z             {
2026-07-26T22:33:03.0416225Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.0416317Z               "line": 2020
2026-07-26T22:33:03.0416403Z             }
2026-07-26T22:33:03.0416473Z           ]
2026-07-26T22:33:03.0416564Z         },
2026-07-26T22:33:03.0416642Z         "unit": {
2026-07-26T22:33:03.0416737Z           "complete": true,
2026-07-26T22:33:03.0416831Z           "evidence": [
2026-07-26T22:33:03.0416913Z             {
2026-07-26T22:33:03.0417027Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.0417121Z               "line": 1334
2026-07-26T22:33:03.0417203Z             }
2026-07-26T22:33:03.0417290Z           ]
2026-07-26T22:33:03.0417365Z         }
2026-07-26T22:33:03.0417451Z       }
2026-07-26T22:33:03.0417605Z     },
2026-07-26T22:33:03.0417694Z     {
2026-07-26T22:33:03.0417799Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-07-26T22:33:03.0417957Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-07-26T22:33:03.0418061Z       "requiredStages": [
2026-07-26T22:33:03.0418141Z         "impl",
2026-07-26T22:33:03.0418227Z         "unit"
2026-07-26T22:33:03.0418316Z       ],
2026-07-26T22:33:03.0418397Z       "stages": {
2026-07-26T22:33:03.0418487Z         "doc": {
2026-07-26T22:33:03.0418578Z           "complete": false,
2026-07-26T22:33:03.0418668Z           "evidence": []
2026-07-26T22:33:03.0418744Z         },
2026-07-26T22:33:03.0418835Z         "impl": {
2026-07-26T22:33:03.0418927Z           "complete": true,
2026-07-26T22:33:03.0419106Z           "evidence": [
2026-07-26T22:33:03.0419189Z             {
2026-07-26T22:33:03.0419312Z               "path": "crates/spt-store/src/atomic.rs",
2026-07-26T22:33:03.0419397Z               "line": 43
2026-07-26T22:33:03.0419475Z             }
2026-07-26T22:33:03.0419565Z           ]
2026-07-26T22:33:03.0419646Z         },
2026-07-26T22:33:03.0419726Z         "int": {
2026-07-26T22:33:03.0419833Z           "complete": false,
2026-07-26T22:33:03.0419922Z           "evidence": []
2026-07-26T22:33:03.0420008Z         },
2026-07-26T22:33:03.0420090Z         "unit": {
2026-07-26T22:33:03.0420185Z           "complete": true,
2026-07-26T22:33:03.0420270Z           "evidence": [
2026-07-26T22:33:03.0420361Z             {
2026-07-26T22:33:03.0420477Z               "path": "crates/spt-store/src/atomic.rs",
2026-07-26T22:33:03.0420570Z               "line": 364
2026-07-26T22:33:03.0420652Z             }
2026-07-26T22:33:03.0420734Z           ]
2026-07-26T22:33:03.0420815Z         }
2026-07-26T22:33:03.0420895Z       }
2026-07-26T22:33:03.0420970Z     },
2026-07-26T22:33:03.0421051Z     {
2026-07-26T22:33:03.0421170Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-07-26T22:33:03.0424418Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-07-26T22:33:03.0424560Z       "requiredStages": [],
2026-07-26T22:33:03.0424651Z       "stages": {
2026-07-26T22:33:03.0424732Z         "doc": {
2026-07-26T22:33:03.0424942Z           "complete": false,
2026-07-26T22:33:03.0425027Z           "evidence": []
2026-07-26T22:33:03.0425113Z         },
2026-07-26T22:33:03.0425185Z         "impl": {
2026-07-26T22:33:03.0425286Z           "complete": true,
2026-07-26T22:33:03.0425365Z           "evidence": [
2026-07-26T22:33:03.0425447Z             {
2026-07-26T22:33:03.0425586Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0425680Z               "line": 565
2026-07-26T22:33:03.0425766Z             },
2026-07-26T22:33:03.0425853Z             {
2026-07-26T22:33:03.0425972Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0426062Z               "line": 602
2026-07-26T22:33:03.0426139Z             },
2026-07-26T22:33:03.0426220Z             {
2026-07-26T22:33:03.0426338Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0426533Z               "line": 846
2026-07-26T22:33:03.0426605Z             }
2026-07-26T22:33:03.0426700Z           ]
2026-07-26T22:33:03.0426780Z         },
2026-07-26T22:33:03.0426867Z         "int": {
2026-07-26T22:33:03.0426958Z           "complete": false,
2026-07-26T22:33:03.0427062Z           "evidence": []
2026-07-26T22:33:03.0427139Z         },
2026-07-26T22:33:03.0427220Z         "unit": {
2026-07-26T22:33:03.0427302Z           "complete": false,
2026-07-26T22:33:03.0427396Z           "evidence": []
2026-07-26T22:33:03.0427473Z         }
2026-07-26T22:33:03.0427554Z       }
2026-07-26T22:33:03.0427635Z     },
2026-07-26T22:33:03.0427720Z     {
2026-07-26T22:33:03.0427831Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-07-26T22:33:03.0428098Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-07-26T22:33:03.0428193Z       "requiredStages": [
2026-07-26T22:33:03.0428292Z         "impl",
2026-07-26T22:33:03.0428369Z         "unit"
2026-07-26T22:33:03.0428451Z       ],
2026-07-26T22:33:03.0428531Z       "stages": {
2026-07-26T22:33:03.0428621Z         "doc": {
2026-07-26T22:33:03.0428715Z           "complete": false,
2026-07-26T22:33:03.0428811Z           "evidence": []
2026-07-26T22:33:03.0428890Z         },
2026-07-26T22:33:03.0429076Z         "impl": {
2026-07-26T22:33:03.0429162Z           "complete": true,
2026-07-26T22:33:03.0429252Z           "evidence": [
2026-07-26T22:33:03.0429328Z             {
2026-07-26T22:33:03.0429458Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.0429562Z               "line": 440
2026-07-26T22:33:03.0429643Z             },
2026-07-26T22:33:03.0429730Z             {
2026-07-26T22:33:03.0429844Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.0429939Z               "line": 496
2026-07-26T22:33:03.0430016Z             },
2026-07-26T22:33:03.0430092Z             {
2026-07-26T22:33:03.0430210Z               "path": "crates/spt-daemon/src/update.rs",
2026-07-26T22:33:03.0430301Z               "line": 156
2026-07-26T22:33:03.0430388Z             }
2026-07-26T22:33:03.0430478Z           ]
2026-07-26T22:33:03.0430549Z         },
2026-07-26T22:33:03.0430625Z         "int": {
2026-07-26T22:33:03.0430717Z           "complete": false,
2026-07-26T22:33:03.0430811Z           "evidence": []
2026-07-26T22:33:03.0430888Z         },
2026-07-26T22:33:03.0430970Z         "unit": {
2026-07-26T22:33:03.0431065Z           "complete": true,
2026-07-26T22:33:03.0431154Z           "evidence": [
2026-07-26T22:33:03.0431231Z             {
2026-07-26T22:33:03.0431352Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.0431436Z               "line": 1060
2026-07-26T22:33:03.0431512Z             },
2026-07-26T22:33:03.0431597Z             {
2026-07-26T22:33:03.0431716Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.0431795Z               "line": 1074
2026-07-26T22:33:03.0431895Z             },
2026-07-26T22:33:03.0431972Z             {
2026-07-26T22:33:03.0432115Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.0432510Z               "line": 1093
2026-07-26T22:33:03.0432626Z             },
2026-07-26T22:33:03.0432735Z             {
2026-07-26T22:33:03.0432993Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.0433126Z               "line": 1110
2026-07-26T22:33:03.0433216Z             },
2026-07-26T22:33:03.0433302Z             {
2026-07-26T22:33:03.0433435Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-07-26T22:33:03.0433527Z               "line": 535
2026-07-26T22:33:03.0433598Z             }
2026-07-26T22:33:03.0433679Z           ]
2026-07-26T22:33:03.0433755Z         }
2026-07-26T22:33:03.0433842Z       }
2026-07-26T22:33:03.0437466Z     },
2026-07-26T22:33:03.0437566Z     {
2026-07-26T22:33:03.0437704Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-07-26T22:33:03.0447615Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-07-26T22:33:03.0447929Z       "requiredStages": [
2026-07-26T22:33:03.0448116Z         "doc",
2026-07-26T22:33:03.0448196Z         "impl",
2026-07-26T22:33:03.0448283Z         "unit",
2026-07-26T22:33:03.0448364Z         "int"
2026-07-26T22:33:03.0448455Z       ],
2026-07-26T22:33:03.0448545Z       "stages": {
2026-07-26T22:33:03.0448631Z         "doc": {
2026-07-26T22:33:03.0448726Z           "complete": true,
2026-07-26T22:33:03.0448816Z           "evidence": [
2026-07-26T22:33:03.0448888Z             {
2026-07-26T22:33:03.0449064Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.0449155Z               "line": 485
2026-07-26T22:33:03.0449238Z             },
2026-07-26T22:33:03.0449313Z             {
2026-07-26T22:33:03.0449417Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0449508Z               "line": 437
2026-07-26T22:33:03.0449590Z             }
2026-07-26T22:33:03.0449903Z           ]
2026-07-26T22:33:03.0449997Z         },
2026-07-26T22:33:03.0450077Z         "impl": {
2026-07-26T22:33:03.0450172Z           "complete": true,
2026-07-26T22:33:03.0450259Z           "evidence": [
2026-07-26T22:33:03.0450354Z             {
2026-07-26T22:33:03.0450477Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0450569Z               "line": 951
2026-07-26T22:33:03.0450655Z             },
2026-07-26T22:33:03.0450734Z             {
2026-07-26T22:33:03.0450855Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0450940Z               "line": 976
2026-07-26T22:33:03.0451021Z             },
2026-07-26T22:33:03.0451102Z             {
2026-07-26T22:33:03.0451222Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0451303Z               "line": 993
2026-07-26T22:33:03.0451397Z             },
2026-07-26T22:33:03.0451475Z             {
2026-07-26T22:33:03.0451598Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0451683Z               "line": 1008
2026-07-26T22:33:03.0451760Z             },
2026-07-26T22:33:03.0451842Z             {
2026-07-26T22:33:03.0451965Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0452046Z               "line": 1028
2026-07-26T22:33:03.0452128Z             },
2026-07-26T22:33:03.0452223Z             {
2026-07-26T22:33:03.0452342Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0452429Z               "line": 1173
2026-07-26T22:33:03.0452510Z             },
2026-07-26T22:33:03.0452589Z             {
2026-07-26T22:33:03.0452727Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0452860Z               "line": 1225
2026-07-26T22:33:03.0452977Z             },
2026-07-26T22:33:03.0453063Z             {
2026-07-26T22:33:03.0453188Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0453277Z               "line": 1284
2026-07-26T22:33:03.0453368Z             },
2026-07-26T22:33:03.0453517Z             {
2026-07-26T22:33:03.0453673Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-07-26T22:33:03.0453756Z               "line": 527
2026-07-26T22:33:03.0453846Z             }
2026-07-26T22:33:03.0453921Z           ]
2026-07-26T22:33:03.0454008Z         },
2026-07-26T22:33:03.0454089Z         "int": {
2026-07-26T22:33:03.0454184Z           "complete": true,
2026-07-26T22:33:03.0454270Z           "evidence": [
2026-07-26T22:33:03.0454346Z             {
2026-07-26T22:33:03.0454465Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-07-26T22:33:03.0454560Z               "line": 35
2026-07-26T22:33:03.0454642Z             },
2026-07-26T22:33:03.0454719Z             {
2026-07-26T22:33:03.0454841Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-07-26T22:33:03.0454928Z               "line": 569
2026-07-26T22:33:03.0455005Z             },
2026-07-26T22:33:03.0455086Z             {
2026-07-26T22:33:03.0455199Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-07-26T22:33:03.0455289Z               "line": 590
2026-07-26T22:33:03.0455370Z             }
2026-07-26T22:33:03.0455449Z           ]
2026-07-26T22:33:03.0455659Z         },
2026-07-26T22:33:03.0455778Z         "unit": {
2026-07-26T22:33:03.0455988Z           "complete": true,
2026-07-26T22:33:03.0456112Z           "evidence": [
2026-07-26T22:33:03.0456235Z             {
2026-07-26T22:33:03.0456455Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0456670Z               "line": 1506
2026-07-26T22:33:03.0456746Z             },
2026-07-26T22:33:03.0456836Z             {
2026-07-26T22:33:03.0456942Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0457037Z               "line": 1550
2026-07-26T22:33:03.0457118Z             },
2026-07-26T22:33:03.0457194Z             {
2026-07-26T22:33:03.0457300Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0457380Z               "line": 1564
2026-07-26T22:33:03.0457567Z             },
2026-07-26T22:33:03.0457647Z             {
2026-07-26T22:33:03.0457766Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0457863Z               "line": 1582
2026-07-26T22:33:03.0457948Z             },
2026-07-26T22:33:03.0458032Z             {
2026-07-26T22:33:03.0458141Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0458232Z               "line": 1606
2026-07-26T22:33:03.0458310Z             },
2026-07-26T22:33:03.0458394Z             {
2026-07-26T22:33:03.0458499Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0458586Z               "line": 1833
2026-07-26T22:33:03.0458662Z             }
2026-07-26T22:33:03.0458747Z           ]
2026-07-26T22:33:03.0458829Z         }
2026-07-26T22:33:03.0458915Z       }
2026-07-26T22:33:03.0459061Z     },
2026-07-26T22:33:03.0459138Z     {
2026-07-26T22:33:03.0459244Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-07-26T22:33:03.0461391Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-07-26T22:33:03.0461491Z       "requiredStages": [
2026-07-26T22:33:03.0461572Z         "unit",
2026-07-26T22:33:03.0461657Z         "int"
2026-07-26T22:33:03.0461730Z       ],
2026-07-26T22:33:03.0461810Z       "stages": {
2026-07-26T22:33:03.0461896Z         "doc": {
2026-07-26T22:33:03.0461996Z           "complete": true,
2026-07-26T22:33:03.0462078Z           "evidence": [
2026-07-26T22:33:03.0462153Z             {
2026-07-26T22:33:03.0462263Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0462364Z               "line": 416
2026-07-26T22:33:03.0462445Z             }
2026-07-26T22:33:03.0462515Z           ]
2026-07-26T22:33:03.0462587Z         },
2026-07-26T22:33:03.0462674Z         "impl": {
2026-07-26T22:33:03.0462765Z           "complete": true,
2026-07-26T22:33:03.0462849Z           "evidence": [
2026-07-26T22:33:03.0462926Z             {
2026-07-26T22:33:03.0463046Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0463130Z               "line": 109
2026-07-26T22:33:03.0463211Z             }
2026-07-26T22:33:03.0463292Z           ]
2026-07-26T22:33:03.0463373Z         },
2026-07-26T22:33:03.0463452Z         "int": {
2026-07-26T22:33:03.0463552Z           "complete": true,
2026-07-26T22:33:03.0463633Z           "evidence": [
2026-07-26T22:33:03.0463719Z             {
2026-07-26T22:33:03.0463842Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:03.0463943Z               "line": 1199
2026-07-26T22:33:03.0464133Z             }
2026-07-26T22:33:03.0464214Z           ]
2026-07-26T22:33:03.0464292Z         },
2026-07-26T22:33:03.0464377Z         "unit": {
2026-07-26T22:33:03.0464471Z           "complete": true,
2026-07-26T22:33:03.0464553Z           "evidence": [
2026-07-26T22:33:03.0464630Z             {
2026-07-26T22:33:03.0464744Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0464839Z               "line": 6334
2026-07-26T22:33:03.0464921Z             }
2026-07-26T22:33:03.0465011Z           ]
2026-07-26T22:33:03.0465087Z         }
2026-07-26T22:33:03.0465168Z       }
2026-07-26T22:33:03.0465246Z     },
2026-07-26T22:33:03.0465335Z     {
2026-07-26T22:33:03.0465454Z       "id": "REQ-HAZARD-VIEWER-RING-ROLL-SNAP",
2026-07-26T22:33:03.0469733Z       "title": "A read-only rc --view VIEWER whose serving brain falls behind the live ring under a hard flood and receives a FORWARD Output seq gap (the ring rolled frames out between reads, BEFORE any channel-overflow eviction → NO KIND_VIEWER_EVICTED marker) must SNAP TO LIVE (accept-and-advance via dedup-below + snap-above), NOT fatal with output gap (brain.rs:624/628 legacy reject-gap). ROOT (v0.13.0 forkpty, post-b4+skip-to-live): serve_attach subscribes a viewer via brain.attach_as(Viewer) leaving session_cursors EMPTY → the viewer serve-brain uses the LEGACY reject-gap → a PRE-eviction ring-roll forward-gap FATALS read_event → serve_attach returns → forwarding stops → attach_received_pty_output=FALSE (a_journaled / p0_paste / attach.rs:1071 wedged_viewer, Linux forkpty; Windows ConPTY floods slower → MASKED false-green). DISTINCT from REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT (the POST-eviction re-subscribe-from-floor): this is PRE-eviction gap-tolerance while STILL subscribed. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative); the CONTROLLER keeps strict reject-gap (exactly-once resume). FIX: arm snap-above at initial viewer attach (attach_as_viewer_snap = attach_as(Viewer) + session_cursors.insert(session_id, from_seq)); the two viewer-survival mechanisms COMPOSE — this tolerates pre-eviction ring-roll gaps, REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT recovers post-eviction. (v0.13.0)",
2026-07-26T22:33:03.0469970Z       "requiredStages": [
2026-07-26T22:33:03.0470048Z         "doc",
2026-07-26T22:33:03.0470138Z         "impl",
2026-07-26T22:33:03.0470219Z         "unit",
2026-07-26T22:33:03.0470309Z         "int"
2026-07-26T22:33:03.0470381Z       ],
2026-07-26T22:33:03.0470457Z       "stages": {
2026-07-26T22:33:03.0470537Z         "doc": {
2026-07-26T22:33:03.0470638Z           "complete": true,
2026-07-26T22:33:03.0470715Z           "evidence": [
2026-07-26T22:33:03.0470795Z             {
2026-07-26T22:33:03.0470894Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.0470994Z               "line": 397
2026-07-26T22:33:03.0471080Z             }
2026-07-26T22:33:03.0471169Z           ]
2026-07-26T22:33:03.0471249Z         },
2026-07-26T22:33:03.0471345Z         "impl": {
2026-07-26T22:33:03.0471437Z           "complete": true,
2026-07-26T22:33:03.0471521Z           "evidence": [
2026-07-26T22:33:03.0471602Z             {
2026-07-26T22:33:03.0471722Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:03.0471808Z               "line": 236
2026-07-26T22:33:03.0471888Z             },
2026-07-26T22:33:03.0471966Z             {
2026-07-26T22:33:03.0472084Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.0472179Z               "line": 1153
2026-07-26T22:33:03.0472261Z             }
2026-07-26T22:33:03.0472342Z           ]
2026-07-26T22:33:03.0472423Z         },
2026-07-26T22:33:03.0472503Z         "int": {
2026-07-26T22:33:03.0472595Z           "complete": true,
2026-07-26T22:33:03.0472690Z           "evidence": [
2026-07-26T22:33:03.0472771Z             {
2026-07-26T22:33:03.0472920Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.0473010Z               "line": 903
2026-07-26T22:33:03.0473095Z             },
2026-07-26T22:33:03.0473296Z             {
2026-07-26T22:33:03.0473438Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.0473520Z               "line": 2793
2026-07-26T22:33:03.0473606Z             }
2026-07-26T22:33:03.0473682Z           ]
2026-07-26T22:33:03.0473766Z         },
2026-07-26T22:33:03.0473847Z         "unit": {
2026-07-26T22:33:03.0473943Z           "complete": true,
2026-07-26T22:33:03.0474031Z           "evidence": [
2026-07-26T22:33:03.0474112Z             {
2026-07-26T22:33:03.0474217Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.0474303Z               "line": 2549
2026-07-26T22:33:03.0474383Z             }
2026-07-26T22:33:03.0474464Z           ]
2026-07-26T22:33:03.0474542Z         }
2026-07-26T22:33:03.0474627Z       }
2026-07-26T22:33:03.0474703Z     },
2026-07-26T22:33:03.0474857Z     {
2026-07-26T22:33:03.0475027Z       "id": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
2026-07-26T22:33:03.0480397Z       "title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST) moved the controller SOCKET WRITE off the drain thread onto controller_writer, but left the bounded HANDOFF (ControllerJob::deliver) as an INLINE try_send SLEEP-POLL on the drain (broker.rs:1450-1457 → deliver:669-685, up to CONTROLLER_WRITE_DEADLINE=5s). So when a controller drains slower than the PTY floods, its CONTROLLER_CHANNEL_DEPTH(4096) channel fills, deliver() polls inline, and the DRAIN THREAD is throttled to the controller's read rate → OutputLog::append's viewer fan-out (try_send) stops running → a concurrent VIEWER receives only the initial replay then nothing (root 'b4', warm forkpty: a_journaled c1=0/EVICT=0/got_output=FALSE; steady-state-near-full = no recovery; forkpty-only, floods harder than Windows ConPTY). The viewer-not-starved-by-a-busy-session property is legitimate (rc --view of a noisy session must show LIVE output). FIX: the controller becomes a SINGLE NON-BLOCKING try_send (like a viewer), done IN append() under the log lock; deliver()'s sleep-poll DELETED; the drain NEVER sleeps. ControllerSink gains a stateful last_ok deadline → a TRULY-stalled controller (continuous-Full past CONTROLLER_WRITE_DEADLINE) is evicted (bounded-wedge preserved); a slow-but-alive controller DROPS frames + falls behind the ring (resume-from-floor, the existing reconnect case). B2 GAPLESS-HANDOFF PRESERVED via a CONTIGUOUS delivered_through: controller_writer advances the cursor ONLY when the written seq == cursor (next expected); a gap from a drop FREEZES the cursor at last-contiguous so a re-attaching brain's resume_seq never skips a dropped chunk (a high-watermark advance past the gap would be a not-exactly-once resume = B2 violation, doyle's gate). (v0.13.0)",
2026-07-26T22:33:03.0480520Z       "requiredStages": [
2026-07-26T22:33:03.0480598Z         "impl",
2026-07-26T22:33:03.0480702Z         "unit",
2026-07-26T22:33:03.0480817Z         "int"
2026-07-26T22:33:03.0480937Z       ],
2026-07-26T22:33:03.0481083Z       "stages": {
2026-07-26T22:33:03.0481164Z         "doc": {
2026-07-26T22:33:03.0481257Z           "complete": false,
2026-07-26T22:33:03.0481364Z           "evidence": []
2026-07-26T22:33:03.0481478Z         },
2026-07-26T22:33:03.0481574Z         "impl": {
2026-07-26T22:33:03.0481663Z           "complete": true,
2026-07-26T22:33:03.0481748Z           "evidence": [
2026-07-26T22:33:03.0481819Z             {
2026-07-26T22:33:03.0481944Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0482024Z               "line": 1221
2026-07-26T22:33:03.0482109Z             },
2026-07-26T22:33:03.0482191Z             {
2026-07-26T22:33:03.0482315Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0482396Z               "line": 2520
2026-07-26T22:33:03.0482477Z             }
2026-07-26T22:33:03.0482564Z           ]
2026-07-26T22:33:03.0482649Z         },
2026-07-26T22:33:03.0482734Z         "int": {
2026-07-26T22:33:03.0482831Z           "complete": true,
2026-07-26T22:33:03.0483031Z           "evidence": [
2026-07-26T22:33:03.0483112Z             {
2026-07-26T22:33:03.0483255Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.0483350Z               "line": 902
2026-07-26T22:33:03.0483431Z             }
2026-07-26T22:33:03.0483508Z           ]
2026-07-26T22:33:03.0483588Z         },
2026-07-26T22:33:03.0483679Z         "unit": {
2026-07-26T22:33:03.0483760Z           "complete": true,
2026-07-26T22:33:03.0483851Z           "evidence": [
2026-07-26T22:33:03.0483931Z             {
2026-07-26T22:33:03.0484046Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0484133Z               "line": 6724
2026-07-26T22:33:03.0484209Z             },
2026-07-26T22:33:03.0484293Z             {
2026-07-26T22:33:03.0484407Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0484587Z               "line": 6797
2026-07-26T22:33:03.0484667Z             }
2026-07-26T22:33:03.0484753Z           ]
2026-07-26T22:33:03.0484835Z         }
2026-07-26T22:33:03.0484916Z       }
2026-07-26T22:33:03.0485001Z     },
2026-07-26T22:33:03.0485078Z     {
2026-07-26T22:33:03.0485178Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-07-26T22:33:03.0485979Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-07-26T22:33:03.0486070Z       "requiredStages": [
2026-07-26T22:33:03.0486155Z         "doc",
2026-07-26T22:33:03.0486236Z         "impl",
2026-07-26T22:33:03.0486327Z         "unit"
2026-07-26T22:33:03.0486404Z       ],
2026-07-26T22:33:03.0486488Z       "stages": {
2026-07-26T22:33:03.0486560Z         "doc": {
2026-07-26T22:33:03.0486657Z           "complete": true,
2026-07-26T22:33:03.0486743Z           "evidence": [
2026-07-26T22:33:03.0486817Z             {
2026-07-26T22:33:03.0486931Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0487012Z               "line": 401
2026-07-26T22:33:03.0487093Z             }
2026-07-26T22:33:03.0487172Z           ]
2026-07-26T22:33:03.0487257Z         },
2026-07-26T22:33:03.0487344Z         "impl": {
2026-07-26T22:33:03.0487431Z           "complete": true,
2026-07-26T22:33:03.0487510Z           "evidence": [
2026-07-26T22:33:03.0487591Z             {
2026-07-26T22:33:03.0487711Z               "path": "crates/spt-daemon/src/access.rs",
2026-07-26T22:33:03.0487797Z               "line": 87
2026-07-26T22:33:03.0487877Z             },
2026-07-26T22:33:03.0487954Z             {
2026-07-26T22:33:03.0488069Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:03.0488158Z               "line": 299
2026-07-26T22:33:03.0488240Z             },
2026-07-26T22:33:03.0488332Z             {
2026-07-26T22:33:03.0488459Z               "path": "crates/spt-daemon/src/digestlink.rs",
2026-07-26T22:33:03.0488559Z               "line": 109
2026-07-26T22:33:03.0488642Z             },
2026-07-26T22:33:03.0488726Z             {
2026-07-26T22:33:03.0488841Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.0488933Z               "line": 56
2026-07-26T22:33:03.0489131Z             },
2026-07-26T22:33:03.0489209Z             {
2026-07-26T22:33:03.0489328Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.0489423Z               "line": 31
2026-07-26T22:33:03.0489499Z             },
2026-07-26T22:33:03.0489581Z             {
2026-07-26T22:33:03.0489698Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.0489779Z               "line": 494
2026-07-26T22:33:03.0489860Z             },
2026-07-26T22:33:03.0489937Z             {
2026-07-26T22:33:03.0490056Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-07-26T22:33:03.0490141Z               "line": 103
2026-07-26T22:33:03.0490218Z             },
2026-07-26T22:33:03.0490408Z             {
2026-07-26T22:33:03.0490534Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.0490628Z               "line": 29
2026-07-26T22:33:03.0490704Z             },
2026-07-26T22:33:03.0490780Z             {
2026-07-26T22:33:03.0490900Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.0490986Z               "line": 105
2026-07-26T22:33:03.0491066Z             },
2026-07-26T22:33:03.0491153Z             {
2026-07-26T22:33:03.0491272Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0491357Z               "line": 229
2026-07-26T22:33:03.0491478Z             },
2026-07-26T22:33:03.0491553Z             {
2026-07-26T22:33:03.0491657Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-07-26T22:33:03.0491753Z               "line": 28
2026-07-26T22:33:03.0492081Z             },
2026-07-26T22:33:03.0492162Z             {
2026-07-26T22:33:03.0492279Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-07-26T22:33:03.0492379Z               "line": 75
2026-07-26T22:33:03.0492456Z             },
2026-07-26T22:33:03.0492547Z             {
2026-07-26T22:33:03.0492674Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-07-26T22:33:03.0492766Z               "line": 32
2026-07-26T22:33:03.0492852Z             },
2026-07-26T22:33:03.0492928Z             {
2026-07-26T22:33:03.0493047Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:03.0493129Z               "line": 40
2026-07-26T22:33:03.0493209Z             },
2026-07-26T22:33:03.0493290Z             {
2026-07-26T22:33:03.0493411Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:03.0493505Z               "line": 185
2026-07-26T22:33:03.0493591Z             },
2026-07-26T22:33:03.0493667Z             {
2026-07-26T22:33:03.0493787Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:03.0493867Z               "line": 64
2026-07-26T22:33:03.0493952Z             },
2026-07-26T22:33:03.0494045Z             {
2026-07-26T22:33:03.0494158Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:03.0494239Z               "line": 234
2026-07-26T22:33:03.0494321Z             },
2026-07-26T22:33:03.0494407Z             {
2026-07-26T22:33:03.0494511Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-07-26T22:33:03.0494596Z               "line": 224
2026-07-26T22:33:03.0494689Z             },
2026-07-26T22:33:03.0494774Z             {
2026-07-26T22:33:03.0494891Z               "path": "crates/spt-net/src/net/sync.rs",
2026-07-26T22:33:03.0494972Z               "line": 37
2026-07-26T22:33:03.0495053Z             },
2026-07-26T22:33:03.0495133Z             {
2026-07-26T22:33:03.0495256Z               "path": "crates/spt-net/src/net/update.rs",
2026-07-26T22:33:03.0495342Z               "line": 38
2026-07-26T22:33:03.0495448Z             },
2026-07-26T22:33:03.0495527Z             {
2026-07-26T22:33:03.0495643Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-07-26T22:33:03.0495738Z               "line": 36
2026-07-26T22:33:03.0495814Z             },
2026-07-26T22:33:03.0495890Z             {
2026-07-26T22:33:03.0496010Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-07-26T22:33:03.0496091Z               "line": 40
2026-07-26T22:33:03.0496185Z             }
2026-07-26T22:33:03.0496267Z           ]
2026-07-26T22:33:03.0496349Z         },
2026-07-26T22:33:03.0496429Z         "int": {
2026-07-26T22:33:03.0496529Z           "complete": true,
2026-07-26T22:33:03.0496616Z           "evidence": [
2026-07-26T22:33:03.0496701Z             {
2026-07-26T22:33:03.0496839Z               "path": "crates/spt-daemon/tests/digest_cross_node.rs",
2026-07-26T22:33:03.0496926Z               "line": 321
2026-07-26T22:33:03.0497007Z             }
2026-07-26T22:33:03.0497086Z           ]
2026-07-26T22:33:03.0497188Z         },
2026-07-26T22:33:03.0497260Z         "unit": {
2026-07-26T22:33:03.0497345Z           "complete": true,
2026-07-26T22:33:03.0497429Z           "evidence": [
2026-07-26T22:33:03.0497615Z             {
2026-07-26T22:33:03.0497737Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-07-26T22:33:03.0497827Z               "line": 220
2026-07-26T22:33:03.0497909Z             },
2026-07-26T22:33:03.0497991Z             {
2026-07-26T22:33:03.0498113Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-07-26T22:33:03.0498204Z               "line": 137
2026-07-26T22:33:03.0498286Z             },
2026-07-26T22:33:03.0498376Z             {
2026-07-26T22:33:03.0498485Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-07-26T22:33:03.0498563Z               "line": 779
2026-07-26T22:33:03.0498638Z             },
2026-07-26T22:33:03.0498728Z             {
2026-07-26T22:33:03.0498839Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-07-26T22:33:03.0498925Z               "line": 225
2026-07-26T22:33:03.0499226Z             },
2026-07-26T22:33:03.0499306Z             {
2026-07-26T22:33:03.0499420Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-07-26T22:33:03.0499526Z               "line": 207
2026-07-26T22:33:03.0499606Z             },
2026-07-26T22:33:03.0499687Z             {
2026-07-26T22:33:03.0499802Z               "path": "crates/spt-net/src/net/notif.rs",
2026-07-26T22:33:03.0499888Z               "line": 143
2026-07-26T22:33:03.0499963Z             },
2026-07-26T22:33:03.0500050Z             {
2026-07-26T22:33:03.0500165Z               "path": "crates/spt-net/src/net/sync.rs",
2026-07-26T22:33:03.0500259Z               "line": 157
2026-07-26T22:33:03.0500325Z             },
2026-07-26T22:33:03.0500416Z             {
2026-07-26T22:33:03.0500531Z               "path": "crates/spt-net/src/net/update.rs",
2026-07-26T22:33:03.0500625Z               "line": 215
2026-07-26T22:33:03.0500701Z             },
2026-07-26T22:33:03.0500778Z             {
2026-07-26T22:33:03.0500902Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-07-26T22:33:03.0500997Z               "line": 177
2026-07-26T22:33:03.0501084Z             },
2026-07-26T22:33:03.0501164Z             {
2026-07-26T22:33:03.0501269Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-07-26T22:33:03.0501360Z               "line": 162
2026-07-26T22:33:03.0501432Z             }
2026-07-26T22:33:03.0501513Z           ]
2026-07-26T22:33:03.0501593Z         }
2026-07-26T22:33:03.0501664Z       }
2026-07-26T22:33:03.0501747Z     },
2026-07-26T22:33:03.0501822Z     {
2026-07-26T22:33:03.0501946Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-07-26T22:33:03.0503798Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-07-26T22:33:03.0503907Z       "requiredStages": [
2026-07-26T22:33:03.0503985Z         "doc",
2026-07-26T22:33:03.0504070Z         "impl",
2026-07-26T22:33:03.0504146Z         "unit",
2026-07-26T22:33:03.0504227Z         "int"
2026-07-26T22:33:03.0504309Z       ],
2026-07-26T22:33:03.0504432Z       "stages": {
2026-07-26T22:33:03.0504556Z         "doc": {
2026-07-26T22:33:03.0504676Z           "complete": true,
2026-07-26T22:33:03.0504765Z           "evidence": [
2026-07-26T22:33:03.0504842Z             {
2026-07-26T22:33:03.0504953Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0505047Z               "line": 257
2026-07-26T22:33:03.0505133Z             }
2026-07-26T22:33:03.0505224Z           ]
2026-07-26T22:33:03.0505310Z         },
2026-07-26T22:33:03.0505400Z         "impl": {
2026-07-26T22:33:03.0505489Z           "complete": true,
2026-07-26T22:33:03.0505693Z           "evidence": [
2026-07-26T22:33:03.0505773Z             {
2026-07-26T22:33:03.0505878Z               "path": "crates/spt-term/src/pty.rs",
2026-07-26T22:33:03.0505955Z               "line": 135
2026-07-26T22:33:03.0506036Z             },
2026-07-26T22:33:03.0506116Z             {
2026-07-26T22:33:03.0506217Z               "path": "crates/spt-term/src/pty.rs",
2026-07-26T22:33:03.0506303Z               "line": 157
2026-07-26T22:33:03.0506379Z             }
2026-07-26T22:33:03.0506459Z           ]
2026-07-26T22:33:03.0506542Z         },
2026-07-26T22:33:03.0506623Z         "int": {
2026-07-26T22:33:03.0506708Z           "complete": true,
2026-07-26T22:33:03.0506799Z           "evidence": [
2026-07-26T22:33:03.0506880Z             {
2026-07-26T22:33:03.0507009Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-07-26T22:33:03.0507185Z               "line": 15
2026-07-26T22:33:03.0507261Z             }
2026-07-26T22:33:03.0507347Z           ]
2026-07-26T22:33:03.0507447Z         },
2026-07-26T22:33:03.0507529Z         "unit": {
2026-07-26T22:33:03.0507623Z           "complete": true,
2026-07-26T22:33:03.0507709Z           "evidence": [
2026-07-26T22:33:03.0507796Z             {
2026-07-26T22:33:03.0507910Z               "path": "crates/spt-term/src/winprog.rs",
2026-07-26T22:33:03.0507999Z               "line": 233
2026-07-26T22:33:03.0508084Z             }
2026-07-26T22:33:03.0508170Z           ]
2026-07-26T22:33:03.0508250Z         }
2026-07-26T22:33:03.0508339Z       }
2026-07-26T22:33:03.0508411Z     },
2026-07-26T22:33:03.0508493Z     {
2026-07-26T22:33:03.0508607Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-07-26T22:33:03.0508765Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-07-26T22:33:03.0508855Z       "requiredStages": [
2026-07-26T22:33:03.0509022Z         "impl",
2026-07-26T22:33:03.0509094Z         "unit"
2026-07-26T22:33:03.0509184Z       ],
2026-07-26T22:33:03.0509270Z       "stages": {
2026-07-26T22:33:03.0509365Z         "doc": {
2026-07-26T22:33:03.0509461Z           "complete": false,
2026-07-26T22:33:03.0509556Z           "evidence": []
2026-07-26T22:33:03.0509632Z         },
2026-07-26T22:33:03.0509719Z         "impl": {
2026-07-26T22:33:03.0509804Z           "complete": true,
2026-07-26T22:33:03.0509895Z           "evidence": [
2026-07-26T22:33:03.0509971Z             {
2026-07-26T22:33:03.0510086Z               "path": "crates/spt-msg/src/deliver.rs",
2026-07-26T22:33:03.0510166Z               "line": 95
2026-07-26T22:33:03.0510252Z             },
2026-07-26T22:33:03.0510334Z             {
2026-07-26T22:33:03.0510453Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0510548Z               "line": 133
2026-07-26T22:33:03.0510634Z             }
2026-07-26T22:33:03.0510721Z           ]
2026-07-26T22:33:03.0510805Z         },
2026-07-26T22:33:03.0510895Z         "int": {
2026-07-26T22:33:03.0510985Z           "complete": false,
2026-07-26T22:33:03.0511072Z           "evidence": []
2026-07-26T22:33:03.0511148Z         },
2026-07-26T22:33:03.0511233Z         "unit": {
2026-07-26T22:33:03.0511324Z           "complete": true,
2026-07-26T22:33:03.0511415Z           "evidence": [
2026-07-26T22:33:03.0511495Z             {
2026-07-26T22:33:03.0511615Z               "path": "crates/spt-msg/src/deliver.rs",
2026-07-26T22:33:03.0511697Z               "line": 338
2026-07-26T22:33:03.0511782Z             },
2026-07-26T22:33:03.0511867Z             {
2026-07-26T22:33:03.0511978Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.0512068Z               "line": 856
2026-07-26T22:33:03.0512144Z             },
2026-07-26T22:33:03.0512220Z             {
2026-07-26T22:33:03.0512336Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0512425Z               "line": 1442
2026-07-26T22:33:03.0512511Z             },
2026-07-26T22:33:03.0512593Z             {
2026-07-26T22:33:03.0512702Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0512893Z               "line": 1500
2026-07-26T22:33:03.0512970Z             }
2026-07-26T22:33:03.0513049Z           ]
2026-07-26T22:33:03.0513135Z         }
2026-07-26T22:33:03.0513216Z       }
2026-07-26T22:33:03.0513297Z     },
2026-07-26T22:33:03.0513381Z     {
2026-07-26T22:33:03.0513494Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-07-26T22:33:03.0515936Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-07-26T22:33:03.0516145Z       "requiredStages": [
2026-07-26T22:33:03.0516225Z         "impl",
2026-07-26T22:33:03.0516310Z         "unit",
2026-07-26T22:33:03.0516390Z         "int"
2026-07-26T22:33:03.0516472Z       ],
2026-07-26T22:33:03.0516548Z       "stages": {
2026-07-26T22:33:03.0516634Z         "doc": {
2026-07-26T22:33:03.0516729Z           "complete": false,
2026-07-26T22:33:03.0516811Z           "evidence": []
2026-07-26T22:33:03.0516892Z         },
2026-07-26T22:33:03.0516977Z         "impl": {
2026-07-26T22:33:03.0517073Z           "complete": true,
2026-07-26T22:33:03.0517149Z           "evidence": [
2026-07-26T22:33:03.0517230Z             {
2026-07-26T22:33:03.0517349Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0517445Z               "line": 1079
2026-07-26T22:33:03.0517526Z             },
2026-07-26T22:33:03.0517607Z             {
2026-07-26T22:33:03.0517712Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0517807Z               "line": 1203
2026-07-26T22:33:03.0517887Z             }
2026-07-26T22:33:03.0517973Z           ]
2026-07-26T22:33:03.0518051Z         },
2026-07-26T22:33:03.0518136Z         "int": {
2026-07-26T22:33:03.0518226Z           "complete": true,
2026-07-26T22:33:03.0518318Z           "evidence": [
2026-07-26T22:33:03.0518390Z             {
2026-07-26T22:33:03.0518517Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-07-26T22:33:03.0518597Z               "line": 187
2026-07-26T22:33:03.0518678Z             },
2026-07-26T22:33:03.0518759Z             {
2026-07-26T22:33:03.0518881Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-07-26T22:33:03.0519029Z               "line": 348
2026-07-26T22:33:03.0519116Z             }
2026-07-26T22:33:03.0519196Z           ]
2026-07-26T22:33:03.0519291Z         },
2026-07-26T22:33:03.0519383Z         "unit": {
2026-07-26T22:33:03.0519473Z           "complete": true,
2026-07-26T22:33:03.0519562Z           "evidence": [
2026-07-26T22:33:03.0519630Z             {
2026-07-26T22:33:03.0519749Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0519844Z               "line": 1510
2026-07-26T22:33:03.0519920Z             },
2026-07-26T22:33:03.0520007Z             {
2026-07-26T22:33:03.0520106Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0520192Z               "line": 15653
2026-07-26T22:33:03.0520269Z             }
2026-07-26T22:33:03.0520346Z           ]
2026-07-26T22:33:03.0520436Z         }
2026-07-26T22:33:03.0520511Z       }
2026-07-26T22:33:03.0520594Z     },
2026-07-26T22:33:03.0520679Z     {
2026-07-26T22:33:03.0520779Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-07-26T22:33:03.0520956Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-07-26T22:33:03.0521046Z       "requiredStages": [
2026-07-26T22:33:03.0521243Z         "impl",
2026-07-26T22:33:03.0521323Z         "unit"
2026-07-26T22:33:03.0521407Z       ],
2026-07-26T22:33:03.0521502Z       "stages": {
2026-07-26T22:33:03.0521623Z         "doc": {
2026-07-26T22:33:03.0521759Z           "complete": false,
2026-07-26T22:33:03.0521951Z           "evidence": []
2026-07-26T22:33:03.0522098Z         },
2026-07-26T22:33:03.0522214Z         "impl": {
2026-07-26T22:33:03.0522361Z           "complete": true,
2026-07-26T22:33:03.0522456Z           "evidence": [
2026-07-26T22:33:03.0522543Z             {
2026-07-26T22:33:03.0522671Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0522766Z               "line": 276
2026-07-26T22:33:03.0522843Z             },
2026-07-26T22:33:03.0522961Z             {
2026-07-26T22:33:03.0523081Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0523290Z               "line": 321
2026-07-26T22:33:03.0523371Z             },
2026-07-26T22:33:03.0523473Z             {
2026-07-26T22:33:03.0523577Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0523662Z               "line": 333
2026-07-26T22:33:03.0523737Z             }
2026-07-26T22:33:03.0523819Z           ]
2026-07-26T22:33:03.0523885Z         },
2026-07-26T22:33:03.0523974Z         "int": {
2026-07-26T22:33:03.0524064Z           "complete": false,
2026-07-26T22:33:03.0524155Z           "evidence": []
2026-07-26T22:33:03.0524228Z         },
2026-07-26T22:33:03.0524312Z         "unit": {
2026-07-26T22:33:03.0524393Z           "complete": true,
2026-07-26T22:33:03.0524480Z           "evidence": [
2026-07-26T22:33:03.0524561Z             {
2026-07-26T22:33:03.0524665Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0524751Z               "line": 588
2026-07-26T22:33:03.0524833Z             },
2026-07-26T22:33:03.0524927Z             {
2026-07-26T22:33:03.0525027Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.0525124Z               "line": 632
2026-07-26T22:33:03.0525200Z             }
2026-07-26T22:33:03.0525285Z           ]
2026-07-26T22:33:03.0525361Z         }
2026-07-26T22:33:03.0525444Z       }
2026-07-26T22:33:03.0525523Z     },
2026-07-26T22:33:03.0525604Z     {
2026-07-26T22:33:03.0525720Z       "id": "REQ-HEAVY-UNIT-CLASSIFICATION",
2026-07-26T22:33:03.0529546Z       "title": "A unit test that stands up a REAL broker inside a lib/bin `#[cfg(test)]` block must sit in the `heavy-broker-pty` nextest group, and the classification must be ENFORCED rather than remembered. FLAKE-LEDGER #14 diagnosed this class in the `spt` binary, wrote the CLASS in prose, then shipped an ENUMERATION of four `rc::tests::` names — so the identical shape in `spt-daemon`'s lib (`applyhost`: a real `Broker::bind` + `serve()` in 10 of its 13 units) stayed in the full-parallel Phase-A pool and TIMED OUT at 240s twice, at v0.32.0 and again under the v0.39.0 W5 gate, the v0.32.0 remedy never having landed. The defect is provable from `.config/nextest.toml` ALONE (two overrides, neither matching `kind(lib)`); timing evidence only ever estimated the rate. Gate: impl — heavy-group overrides for `applyhost`/`livehost`/`pump` (spt-daemon lib) and `wansend` (spt bin, found BY the check rather than by a person), plus `xtask check`'s `check_heavy_unit_classification` keyed on the SHAPE (a `Broker::bind` after the `mod tests` marker) instead of a name list; unit — the two pure seams, including the regression for this check's OWN first draft, which substring-matched `<module>::tests` and so missed every module written inside an alternation group. Kin FLAKE-LEDGER #14/#15, REQ-CI-DOCS-ONLY-THIN.",
2026-07-26T22:33:03.0529666Z       "requiredStages": [
2026-07-26T22:33:03.0529756Z         "impl",
2026-07-26T22:33:03.0529846Z         "unit"
2026-07-26T22:33:03.0529933Z       ],
2026-07-26T22:33:03.0530024Z       "stages": {
2026-07-26T22:33:03.0530113Z         "doc": {
2026-07-26T22:33:03.0530205Z           "complete": false,
2026-07-26T22:33:03.0530300Z           "evidence": []
2026-07-26T22:33:03.0530485Z         },
2026-07-26T22:33:03.0530577Z         "impl": {
2026-07-26T22:33:03.0530671Z           "complete": true,
2026-07-26T22:33:03.0530766Z           "evidence": [
2026-07-26T22:33:03.0530844Z             {
2026-07-26T22:33:03.0530962Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.0531048Z               "line": 435
2026-07-26T22:33:03.0531125Z             },
2026-07-26T22:33:03.0531201Z             {
2026-07-26T22:33:03.0531305Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.0531386Z               "line": 452
2026-07-26T22:33:03.0531469Z             }
2026-07-26T22:33:03.0531545Z           ]
2026-07-26T22:33:03.0531629Z         },
2026-07-26T22:33:03.0531711Z         "int": {
2026-07-26T22:33:03.0531812Z           "complete": false,
2026-07-26T22:33:03.0532024Z           "evidence": []
2026-07-26T22:33:03.0532115Z         },
2026-07-26T22:33:03.0532192Z         "unit": {
2026-07-26T22:33:03.0532292Z           "complete": true,
2026-07-26T22:33:03.0532387Z           "evidence": [
2026-07-26T22:33:03.0532468Z             {
2026-07-26T22:33:03.0535769Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.0535888Z               "line": 1760
2026-07-26T22:33:03.0535965Z             },
2026-07-26T22:33:03.0536046Z             {
2026-07-26T22:33:03.0536160Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.0536261Z               "line": 1773
2026-07-26T22:33:03.0536347Z             },
2026-07-26T22:33:03.0536431Z             {
2026-07-26T22:33:03.0536541Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.0536638Z               "line": 1788
2026-07-26T22:33:03.0536727Z             }
2026-07-26T22:33:03.0536804Z           ]
2026-07-26T22:33:03.0536886Z         }
2026-07-26T22:33:03.0536967Z       }
2026-07-26T22:33:03.0537056Z     },
2026-07-26T22:33:03.0537146Z     {
2026-07-26T22:33:03.0537236Z       "id": "REQ-HOST-RUN-1",
2026-07-26T22:33:03.0539779Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-07-26T22:33:03.0539898Z       "requiredStages": [
2026-07-26T22:33:03.0539987Z         "impl",
2026-07-26T22:33:03.0540067Z         "unit",
2026-07-26T22:33:03.0540150Z         "int"
2026-07-26T22:33:03.0540231Z       ],
2026-07-26T22:33:03.0540325Z       "stages": {
2026-07-26T22:33:03.0540411Z         "doc": {
2026-07-26T22:33:03.0540507Z           "complete": false,
2026-07-26T22:33:03.0540593Z           "evidence": []
2026-07-26T22:33:03.0540682Z         },
2026-07-26T22:33:03.0540755Z         "impl": {
2026-07-26T22:33:03.0540855Z           "complete": true,
2026-07-26T22:33:03.0540945Z           "evidence": [
2026-07-26T22:33:03.0541026Z             {
2026-07-26T22:33:03.0541160Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.0541246Z               "line": 30
2026-07-26T22:33:03.0541326Z             },
2026-07-26T22:33:03.0541404Z             {
2026-07-26T22:33:03.0541527Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.0541618Z               "line": 89
2026-07-26T22:33:03.0541699Z             },
2026-07-26T22:33:03.0541785Z             {
2026-07-26T22:33:03.0541904Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.0542000Z               "line": 229
2026-07-26T22:33:03.0542213Z             },
2026-07-26T22:33:03.0542295Z             {
2026-07-26T22:33:03.0542405Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0542499Z               "line": 1865
2026-07-26T22:33:03.0542575Z             }
2026-07-26T22:33:03.0542665Z           ]
2026-07-26T22:33:03.0542738Z         },
2026-07-26T22:33:03.0542828Z         "int": {
2026-07-26T22:33:03.0542923Z           "complete": true,
2026-07-26T22:33:03.0543019Z           "evidence": [
2026-07-26T22:33:03.0543100Z             {
2026-07-26T22:33:03.0543218Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:03.0543310Z               "line": 289
2026-07-26T22:33:03.0543396Z             }
2026-07-26T22:33:03.0543468Z           ]
2026-07-26T22:33:03.0543552Z         },
2026-07-26T22:33:03.0543634Z         "unit": {
2026-07-26T22:33:03.0543829Z           "complete": true,
2026-07-26T22:33:03.0543915Z           "evidence": [
2026-07-26T22:33:03.0543992Z             {
2026-07-26T22:33:03.0544115Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.0544210Z               "line": 404
2026-07-26T22:33:03.0544293Z             },
2026-07-26T22:33:03.0544378Z             {
2026-07-26T22:33:03.0544501Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.0544598Z               "line": 588
2026-07-26T22:33:03.0544679Z             },
2026-07-26T22:33:03.0544758Z             {
2026-07-26T22:33:03.0544876Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.0544958Z               "line": 711
2026-07-26T22:33:03.0545029Z             }
2026-07-26T22:33:03.0545113Z           ]
2026-07-26T22:33:03.0545194Z         }
2026-07-26T22:33:03.0545275Z       }
2026-07-26T22:33:03.0545358Z     },
2026-07-26T22:33:03.0545437Z     {
2026-07-26T22:33:03.0545537Z       "id": "REQ-HOST-RUN-2",
2026-07-26T22:33:03.0547212Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-07-26T22:33:03.0547320Z       "requiredStages": [
2026-07-26T22:33:03.0547397Z         "impl",
2026-07-26T22:33:03.0547484Z         "unit",
2026-07-26T22:33:03.0547565Z         "int"
2026-07-26T22:33:03.0547658Z       ],
2026-07-26T22:33:03.0547748Z       "stages": {
2026-07-26T22:33:03.0547840Z         "doc": {
2026-07-26T22:33:03.0547933Z           "complete": false,
2026-07-26T22:33:03.0548028Z           "evidence": []
2026-07-26T22:33:03.0548114Z         },
2026-07-26T22:33:03.0548205Z         "impl": {
2026-07-26T22:33:03.0548300Z           "complete": true,
2026-07-26T22:33:03.0548380Z           "evidence": [
2026-07-26T22:33:03.0548458Z             {
2026-07-26T22:33:03.0548582Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.0548662Z               "line": 230
2026-07-26T22:33:03.0548744Z             },
2026-07-26T22:33:03.0548825Z             {
2026-07-26T22:33:03.0548934Z               "path": "crates/spt-term/src/pty.rs",
2026-07-26T22:33:03.0549107Z               "line": 113
2026-07-26T22:33:03.0549186Z             }
2026-07-26T22:33:03.0549263Z           ]
2026-07-26T22:33:03.0549339Z         },
2026-07-26T22:33:03.0549426Z         "int": {
2026-07-26T22:33:03.0549520Z           "complete": true,
2026-07-26T22:33:03.0549606Z           "evidence": [
2026-07-26T22:33:03.0549688Z             {
2026-07-26T22:33:03.0549807Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:03.0549897Z               "line": 714
2026-07-26T22:33:03.0550089Z             }
2026-07-26T22:33:03.0550169Z           ]
2026-07-26T22:33:03.0550249Z         },
2026-07-26T22:33:03.0550325Z         "unit": {
2026-07-26T22:33:03.0550420Z           "complete": true,
2026-07-26T22:33:03.0550509Z           "evidence": [
2026-07-26T22:33:03.0550594Z             {
2026-07-26T22:33:03.0550705Z               "path": "crates/spt-term/tests/surface.rs",
2026-07-26T22:33:03.0550796Z               "line": 86
2026-07-26T22:33:03.0550876Z             }
2026-07-26T22:33:03.0550957Z           ]
2026-07-26T22:33:03.0551034Z         }
2026-07-26T22:33:03.0551125Z       }
2026-07-26T22:33:03.0551205Z     },
2026-07-26T22:33:03.0551291Z     {
2026-07-26T22:33:03.0551430Z       "id": "REQ-HOSTING-AUTHORITY-CONTROLLABLE",
2026-07-26T22:33:03.0559423Z       "title": "RC-RENDER-TRUTH v0.38.1 fast-follow leg 3 (hertz todlando immortal-hybrid trace, doyle fork ruling 2026-07-18 = controllable-authority): ONE hosting authority — persisted `state` stays the durable endpoint TYPE (REQ-EP-6 open type system; establish_perch's prior-type preserve at startup.rs:346-350 is INTENTIONAL and stays), `controllable==Some(true)` is the source-definitive broker-PTY authority. FIELD ROOT (C1 coverage gap, not new family): an spt-hosted bind over a prior ready_agent perch preserves state=ready_agent while stamping controllable=true + online -> livehost restart_resume_gate (508-534) Skip's state!=live_agent so the orphan never resumes, and reconcile's C1 dead-pid hybrid heal predicate was scoped controllable=false so controllable=true escapes -> immortal dead-PID ready_agent hybrid, latch-driven Active projection (todlando field state; rc's no-session refusal was TRUTHFUL). FIX (hertz refinement, ratified): remove the state rejection from restart_resume_gate; reconcile routes only non-live_agent && controllable!=Some(true) through the PID-model hybrid heal, while controllable==Some(true) rows fall through BROKER-SESSION truth (orphan with ledger/adapter material => Resume; no session + dead pid => terminal offline via the W2 atomic normalize). Psyche hosting stays separately state-gated (live_agent only). endpoint_survival tables BOTH live_agent and ready_agent broker-owned rows -- both resume their PTY at daemon start, ready stays no-Psyche (hertz definitive-trace addendum). restart_resume_gate keys on online+controllable+session/relay/custody belts, no state arg. cmd_bind's online gate reads/verifies the PERSISTED state it just wrote, never only the requested arg (parity with cmd_listen's W2 creator gate). Gate: impl -- gate/reconcile routing + bind online-gate persisted-read; unit -- routing table (non-live+controllable!=true -> PID-model; ready+true -> session-truth; live_agent unchanged); int -- hertz matrix verbatim: (i) ready_agent+controllable=true+online ORPHAN (dead harness, ledger+material) => restart RESUMES; (ii) ready+true+online with dead pid/NO session => reconcile terminally offlines + Active projection removed; (iii) legitimate ready listener (controllable!=true, live pid) => stays messaging-online on the PID model, never treated as PTY-attachable; (iv) spt-hosted bind over prior ready_agent => controllable=true+online+restart-resume works with preserved type; doc -- ADR-0041 amendment note (authority split: type vs hosting).",
2026-07-26T22:33:03.0559714Z       "requiredStages": [
2026-07-26T22:33:03.0559800Z         "doc",
2026-07-26T22:33:03.0559895Z         "impl",
2026-07-26T22:33:03.0559972Z         "unit",
2026-07-26T22:33:03.0560048Z         "int"
2026-07-26T22:33:03.0560123Z       ],
2026-07-26T22:33:03.0560205Z       "stages": {
2026-07-26T22:33:03.0560277Z         "doc": {
2026-07-26T22:33:03.0560367Z           "complete": true,
2026-07-26T22:33:03.0560447Z           "evidence": [
2026-07-26T22:33:03.0560524Z             {
2026-07-26T22:33:03.0560668Z               "path": "docs/adr/0041-endpoint-lifecycle-truth.md",
2026-07-26T22:33:03.0560767Z               "line": 103
2026-07-26T22:33:03.0560847Z             }
2026-07-26T22:33:03.0560914Z           ]
2026-07-26T22:33:03.0561098Z         },
2026-07-26T22:33:03.0561173Z         "impl": {
2026-07-26T22:33:03.0561265Z           "complete": true,
2026-07-26T22:33:03.0561445Z           "evidence": [
2026-07-26T22:33:03.0561527Z             {
2026-07-26T22:33:03.0561647Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.0561727Z               "line": 520
2026-07-26T22:33:03.0561812Z             },
2026-07-26T22:33:03.0561923Z             {
2026-07-26T22:33:03.0562127Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.0562266Z               "line": 528
2026-07-26T22:33:03.0562438Z             },
2026-07-26T22:33:03.0562544Z             {
2026-07-26T22:33:03.0562728Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.0562952Z               "line": 782
2026-07-26T22:33:03.0563159Z             },
2026-07-26T22:33:03.0563239Z             {
2026-07-26T22:33:03.0563358Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0563450Z               "line": 889
2026-07-26T22:33:03.0563531Z             }
2026-07-26T22:33:03.0563615Z           ]
2026-07-26T22:33:03.0563704Z         },
2026-07-26T22:33:03.0563790Z         "int": {
2026-07-26T22:33:03.0563887Z           "complete": true,
2026-07-26T22:33:03.0563967Z           "evidence": [
2026-07-26T22:33:03.0564052Z             {
2026-07-26T22:33:03.0564197Z               "path": "crates/spt-daemon/tests/endpoint_survival.rs",
2026-07-26T22:33:03.0564282Z               "line": 177
2026-07-26T22:33:03.0564362Z             },
2026-07-26T22:33:03.0564445Z             {
2026-07-26T22:33:03.0564583Z               "path": "crates/spt-daemon/tests/endpoint_survival.rs",
2026-07-26T22:33:03.0564668Z               "line": 237
2026-07-26T22:33:03.0564749Z             },
2026-07-26T22:33:03.0564835Z             {
2026-07-26T22:33:03.0564983Z               "path": "crates/spt-daemon/tests/endpoint_survival.rs",
2026-07-26T22:33:03.0565059Z               "line": 270
2026-07-26T22:33:03.0565145Z             },
2026-07-26T22:33:03.0565226Z             {
2026-07-26T22:33:03.0565335Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0565409Z               "line": 1843
2026-07-26T22:33:03.0565489Z             }
2026-07-26T22:33:03.0565573Z           ]
2026-07-26T22:33:03.0565655Z         },
2026-07-26T22:33:03.0565738Z         "unit": {
2026-07-26T22:33:03.0565831Z           "complete": true,
2026-07-26T22:33:03.0565911Z           "evidence": [
2026-07-26T22:33:03.0565997Z             {
2026-07-26T22:33:03.0566116Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.0566205Z               "line": 2458
2026-07-26T22:33:03.0566281Z             },
2026-07-26T22:33:03.0566362Z             {
2026-07-26T22:33:03.0566478Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.0566576Z               "line": 2521
2026-07-26T22:33:03.0566648Z             },
2026-07-26T22:33:03.0566735Z             {
2026-07-26T22:33:03.0566854Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0566939Z               "line": 1887
2026-07-26T22:33:03.0567021Z             }
2026-07-26T22:33:03.0567102Z           ]
2026-07-26T22:33:03.0567182Z         }
2026-07-26T22:33:03.0567278Z       }
2026-07-26T22:33:03.0567359Z     },
2026-07-26T22:33:03.0567435Z     {
2026-07-26T22:33:03.0567539Z       "id": "REQ-IDLE-PARKED-DELIVERY",
2026-07-26T22:33:03.0569815Z       "title": "W5 (LIFECYCLE-TRUTH): a message QUEUED to an ALREADY-idle spt-hosted endpoint is delivered without an operator poke. ROOT (live during the milestone dispatch 2026-07-07): the idle-edge drain (F-023 leg 2) fires only on the ACTIVE->IDLE transition; no new edge ever comes for a parked session, and the send-time inject didn't carry it — both doyle->todlando dispatches sat delivered=0 in the spool while the endpoint showed ONLINE. FIX: send-time inject fires for an already-idle spt-hosted target (activity sense says idle => inject now, not spool), and/or a bounded spool sweep re-offers pending rows to idle endpoints (piggyback the pulse tick, no new loop). Int: send to a session idle for N minutes -> delivered without any operator poke.",
2026-07-26T22:33:03.0570078Z       "requiredStages": [
2026-07-26T22:33:03.0570154Z         "impl",
2026-07-26T22:33:03.0570246Z         "unit",
2026-07-26T22:33:03.0570326Z         "int"
2026-07-26T22:33:03.0570407Z       ],
2026-07-26T22:33:03.0570488Z       "stages": {
2026-07-26T22:33:03.0570570Z         "doc": {
2026-07-26T22:33:03.0570664Z           "complete": false,
2026-07-26T22:33:03.0570755Z           "evidence": []
2026-07-26T22:33:03.0570833Z         },
2026-07-26T22:33:03.0570923Z         "impl": {
2026-07-26T22:33:03.0571012Z           "complete": true,
2026-07-26T22:33:03.0571104Z           "evidence": [
2026-07-26T22:33:03.0571190Z             {
2026-07-26T22:33:03.0571412Z               "path": "crates/spt-daemon/src/inject.rs",
2026-07-26T22:33:03.0571503Z               "line": 106
2026-07-26T22:33:03.0571583Z             },
2026-07-26T22:33:03.0571672Z             {
2026-07-26T22:33:03.0571787Z               "path": "crates/spt-daemon/src/inject.rs",
2026-07-26T22:33:03.0571868Z               "line": 161
2026-07-26T22:33:03.0571963Z             },
2026-07-26T22:33:03.0572039Z             {
2026-07-26T22:33:03.0572160Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.0572245Z               "line": 263
2026-07-26T22:33:03.0572330Z             },
2026-07-26T22:33:03.0572401Z             {
2026-07-26T22:33:03.0572512Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0572602Z               "line": 7071
2026-07-26T22:33:03.0572678Z             }
2026-07-26T22:33:03.0572760Z           ]
2026-07-26T22:33:03.0572840Z         },
2026-07-26T22:33:03.0572926Z         "int": {
2026-07-26T22:33:03.0573016Z           "complete": true,
2026-07-26T22:33:03.0573113Z           "evidence": [
2026-07-26T22:33:03.0573188Z             {
2026-07-26T22:33:03.0573345Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.0573442Z               "line": 3037
2026-07-26T22:33:03.0573517Z             }
2026-07-26T22:33:03.0573589Z           ]
2026-07-26T22:33:03.0573675Z         },
2026-07-26T22:33:03.0573762Z         "unit": {
2026-07-26T22:33:03.0573855Z           "complete": true,
2026-07-26T22:33:03.0573942Z           "evidence": [
2026-07-26T22:33:03.0574024Z             {
2026-07-26T22:33:03.0574133Z               "path": "crates/spt-daemon/src/inject.rs",
2026-07-26T22:33:03.0574227Z               "line": 254
2026-07-26T22:33:03.0574312Z             }
2026-07-26T22:33:03.0574394Z           ]
2026-07-26T22:33:03.0574471Z         }
2026-07-26T22:33:03.0574580Z       }
2026-07-26T22:33:03.0574656Z     },
2026-07-26T22:33:03.0574742Z     {
2026-07-26T22:33:03.0574833Z       "id": "REQ-INFRA-1",
2026-07-26T22:33:03.0575015Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-07-26T22:33:03.0575109Z       "requiredStages": [],
2026-07-26T22:33:03.0575199Z       "stages": {
2026-07-26T22:33:03.0575281Z         "doc": {
2026-07-26T22:33:03.0575381Z           "complete": false,
2026-07-26T22:33:03.0575467Z           "evidence": []
2026-07-26T22:33:03.0575552Z         },
2026-07-26T22:33:03.0575629Z         "impl": {
2026-07-26T22:33:03.0575715Z           "complete": false,
2026-07-26T22:33:03.0575800Z           "evidence": []
2026-07-26T22:33:03.0575877Z         },
2026-07-26T22:33:03.0575959Z         "int": {
2026-07-26T22:33:03.0576058Z           "complete": false,
2026-07-26T22:33:03.0576134Z           "evidence": []
2026-07-26T22:33:03.0576210Z         },
2026-07-26T22:33:03.0576288Z         "unit": {
2026-07-26T22:33:03.0576383Z           "complete": false,
2026-07-26T22:33:03.0576467Z           "evidence": []
2026-07-26T22:33:03.0576543Z         }
2026-07-26T22:33:03.0576639Z       }
2026-07-26T22:33:03.0576728Z     },
2026-07-26T22:33:03.0576808Z     {
2026-07-26T22:33:03.0576927Z       "id": "REQ-INJECT-MULTILINE-INTEGRITY",
2026-07-26T22:33:03.0579609Z       "title": "W5 (LIFECYCLE-TRUTH): the idle-inject TYPED delivery leg delivers multi-line bodies byte-complete. ROOT (4 field instances + spool diff): the typed leg eats HEAD bytes nondeterministically — spool rows complete (1669B) vs ~322B received suffix; mid-turn poll envelopes always intact; a 1854B body later rode the same leg intact => timing race (terminal-readiness / enter-coalescing settle class), NOT a size cap. FIX DIRECTION (todlando proposes on the broker/translate typed-inject seam): settle-before-head, bracketed-paste where the harness supports it, or chunked write with echo-verify. STAKES: live-SENT injects leave NO spool copy — truncation there is unrecoverable. Int: repeated large multi-line injects into a real PTY session arrive byte-complete (loop N times — the race is timing-dependent, single-shot green is not proof).",
2026-07-26T22:33:03.0579814Z       "requiredStages": [
2026-07-26T22:33:03.0579899Z         "impl",
2026-07-26T22:33:03.0579976Z         "unit",
2026-07-26T22:33:03.0580071Z         "int"
2026-07-26T22:33:03.0580157Z       ],
2026-07-26T22:33:03.0580238Z       "stages": {
2026-07-26T22:33:03.0580314Z         "doc": {
2026-07-26T22:33:03.0580404Z           "complete": false,
2026-07-26T22:33:03.0580491Z           "evidence": []
2026-07-26T22:33:03.0580572Z         },
2026-07-26T22:33:03.0580652Z         "impl": {
2026-07-26T22:33:03.0580748Z           "complete": true,
2026-07-26T22:33:03.0580830Z           "evidence": [
2026-07-26T22:33:03.0580915Z             {
2026-07-26T22:33:03.0581034Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0581135Z               "line": 3134
2026-07-26T22:33:03.0581215Z             },
2026-07-26T22:33:03.0581305Z             {
2026-07-26T22:33:03.0581421Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0581511Z               "line": 3189
2026-07-26T22:33:03.0581592Z             },
2026-07-26T22:33:03.0581678Z             {
2026-07-26T22:33:03.0581803Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0581901Z               "line": 3220
2026-07-26T22:33:03.0581981Z             },
2026-07-26T22:33:03.0582067Z             {
2026-07-26T22:33:03.0582190Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0582275Z               "line": 3260
2026-07-26T22:33:03.0582366Z             },
2026-07-26T22:33:03.0582438Z             {
2026-07-26T22:33:03.0582547Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0582627Z               "line": 3328
2026-07-26T22:33:03.0582710Z             }
2026-07-26T22:33:03.0582790Z           ]
2026-07-26T22:33:03.0582866Z         },
2026-07-26T22:33:03.0582947Z         "int": {
2026-07-26T22:33:03.0583044Z           "complete": true,
2026-07-26T22:33:03.0583129Z           "evidence": [
2026-07-26T22:33:03.0583228Z             {
2026-07-26T22:33:03.0583382Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.0583477Z               "line": 3143
2026-07-26T22:33:03.0583562Z             },
2026-07-26T22:33:03.0583644Z             {
2026-07-26T22:33:03.0583787Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.0583877Z               "line": 3217
2026-07-26T22:33:03.0583954Z             }
2026-07-26T22:33:03.0584045Z           ]
2026-07-26T22:33:03.0584125Z         },
2026-07-26T22:33:03.0584202Z         "unit": {
2026-07-26T22:33:03.0584293Z           "complete": true,
2026-07-26T22:33:03.0584387Z           "evidence": [
2026-07-26T22:33:03.0584459Z             {
2026-07-26T22:33:03.0584570Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0584656Z               "line": 7768
2026-07-26T22:33:03.0584739Z             },
2026-07-26T22:33:03.0584816Z             {
2026-07-26T22:33:03.0584935Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0585022Z               "line": 7794
2026-07-26T22:33:03.0585111Z             },
2026-07-26T22:33:03.0585293Z             {
2026-07-26T22:33:03.0585416Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0585497Z               "line": 7816
2026-07-26T22:33:03.0585584Z             },
2026-07-26T22:33:03.0585674Z             {
2026-07-26T22:33:03.0585783Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0585865Z               "line": 7829
2026-07-26T22:33:03.0585946Z             },
2026-07-26T22:33:03.0586027Z             {
2026-07-26T22:33:03.0586131Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0586228Z               "line": 7854
2026-07-26T22:33:03.0586308Z             }
2026-07-26T22:33:03.0586394Z           ]
2026-07-26T22:33:03.0586465Z         }
2026-07-26T22:33:03.0586548Z       }
2026-07-26T22:33:03.0586628Z     },
2026-07-26T22:33:03.0586708Z     {
2026-07-26T22:33:03.0586891Z       "id": "REQ-INPUT-CONTROLLER-FENCE",
2026-07-26T22:33:03.0591575Z       "title": "RC-RENDER-TRUTH W2 (ADR-0044 decision 3, hertz same-machine --take split-brain RCA P0-C + scope clarification, doyle seam-verified broker.rs dispatch_input 3920-3935 session-addressed unfenced): broker-enforced input fencing SCOPED TO RC-ORIGIN INPUT — RC Input/Resize bind to the ACTIVE controller lease (or originating broker connection as the N-1 surrogate); commands from a displaced/stale lease are rejected/dropped after replacement. Do NOT globally gate generic KIND_INPUT: shell/system injection legitimately sends InputReq from non-controller connections (Minter::Shell, shellchan seam) — fence keys on an additive controller-ownership token validated only for token-bearing/Minter::Rc requests, or a dedicated guarded RC-input verb; token optional/default-none preserves generic injection exactly. REQUIRED DEFENSE, not optional hardening: this is what makes the at-most-one-input-capable-controller invariant TRUE even when the Displaced notification is delayed or lost (today the displaced window keeps typing into the PTY indefinitely — the field split-brain). Gate: impl — token/verb + lease-bound validation on the RC input path; unit — stale-lease RC input rejected post-replacement, active-lease applies, tokenless generic injection (shell) UNCHANGED, absent-lease N-1 falls back to connection fencing; int — hertz regression steps 5-6 (post-takeover Input+Resize from A mutate NOTHING, from B both apply) + shell injection still lands mid-controlled-session; doc — ADR-0044.",
2026-07-26T22:33:03.0591700Z       "requiredStages": [
2026-07-26T22:33:03.0591794Z         "doc",
2026-07-26T22:33:03.0591875Z         "impl",
2026-07-26T22:33:03.0591953Z         "unit",
2026-07-26T22:33:03.0592034Z         "int"
2026-07-26T22:33:03.0592147Z       ],
2026-07-26T22:33:03.0592258Z       "stages": {
2026-07-26T22:33:03.0592363Z         "doc": {
2026-07-26T22:33:03.0592494Z           "complete": true,
2026-07-26T22:33:03.0592685Z           "evidence": [
2026-07-26T22:33:03.0592764Z             {
2026-07-26T22:33:03.0592897Z               "path": "docs/adr/0044-controller-lease-truth.md",
2026-07-26T22:33:03.0592993Z               "line": 83
2026-07-26T22:33:03.0593111Z             }
2026-07-26T22:33:03.0593207Z           ]
2026-07-26T22:33:03.0593289Z         },
2026-07-26T22:33:03.0593375Z         "impl": {
2026-07-26T22:33:03.0593474Z           "complete": true,
2026-07-26T22:33:03.0593551Z           "evidence": [
2026-07-26T22:33:03.0593632Z             {
2026-07-26T22:33:03.0593751Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0593851Z               "line": 374
2026-07-26T22:33:03.0593933Z             },
2026-07-26T22:33:03.0594013Z             {
2026-07-26T22:33:03.0594118Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0594204Z               "line": 4968
2026-07-26T22:33:03.0594281Z             }
2026-07-26T22:33:03.0594362Z           ]
2026-07-26T22:33:03.0594447Z         },
2026-07-26T22:33:03.0594534Z         "int": {
2026-07-26T22:33:03.0594619Z           "complete": true,
2026-07-26T22:33:03.0594709Z           "evidence": [
2026-07-26T22:33:03.0594925Z             {
2026-07-26T22:33:03.0595076Z               "path": "crates/spt-daemon/tests/controller_lease.rs",
2026-07-26T22:33:03.0595173Z               "line": 415
2026-07-26T22:33:03.0595249Z             }
2026-07-26T22:33:03.0595337Z           ]
2026-07-26T22:33:03.0595423Z         },
2026-07-26T22:33:03.0595505Z         "unit": {
2026-07-26T22:33:03.0595596Z           "complete": true,
2026-07-26T22:33:03.0595685Z           "evidence": [
2026-07-26T22:33:03.0595766Z             {
2026-07-26T22:33:03.0595886Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0595971Z               "line": 6664
2026-07-26T22:33:03.0596057Z             },
2026-07-26T22:33:03.0596140Z             {
2026-07-26T22:33:03.0596263Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0596439Z               "line": 6700
2026-07-26T22:33:03.0596520Z             }
2026-07-26T22:33:03.0596597Z           ]
2026-07-26T22:33:03.0596687Z         }
2026-07-26T22:33:03.0596778Z       }
2026-07-26T22:33:03.0596863Z     },
2026-07-26T22:33:03.0596940Z     {
2026-07-26T22:33:03.0597040Z       "id": "REQ-INST-1",
2026-07-26T22:33:03.0597192Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-07-26T22:33:03.0597292Z       "requiredStages": [],
2026-07-26T22:33:03.0597369Z       "stages": {
2026-07-26T22:33:03.0597461Z         "doc": {
2026-07-26T22:33:03.0597554Z           "complete": false,
2026-07-26T22:33:03.0597649Z           "evidence": []
2026-07-26T22:33:03.0597730Z         },
2026-07-26T22:33:03.0597820Z         "impl": {
2026-07-26T22:33:03.0597909Z           "complete": false,
2026-07-26T22:33:03.0598009Z           "evidence": []
2026-07-26T22:33:03.0598090Z         },
2026-07-26T22:33:03.0598177Z         "int": {
2026-07-26T22:33:03.0598257Z           "complete": false,
2026-07-26T22:33:03.0598357Z           "evidence": []
2026-07-26T22:33:03.0598434Z         },
2026-07-26T22:33:03.0598519Z         "unit": {
2026-07-26T22:33:03.0598619Z           "complete": false,
2026-07-26T22:33:03.0598707Z           "evidence": []
2026-07-26T22:33:03.0598782Z         }
2026-07-26T22:33:03.0598867Z       }
2026-07-26T22:33:03.0599016Z     },
2026-07-26T22:33:03.0599111Z     {
2026-07-26T22:33:03.0599192Z       "id": "REQ-INST-10",
2026-07-26T22:33:03.0599397Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-07-26T22:33:03.0599492Z       "requiredStages": [
2026-07-26T22:33:03.0599582Z         "impl",
2026-07-26T22:33:03.0599660Z         "unit"
2026-07-26T22:33:03.0599740Z       ],
2026-07-26T22:33:03.0599821Z       "stages": {
2026-07-26T22:33:03.0599902Z         "doc": {
2026-07-26T22:33:03.0599990Z           "complete": false,
2026-07-26T22:33:03.0600088Z           "evidence": []
2026-07-26T22:33:03.0600165Z         },
2026-07-26T22:33:03.0600247Z         "impl": {
2026-07-26T22:33:03.0600337Z           "complete": true,
2026-07-26T22:33:03.0600421Z           "evidence": [
2026-07-26T22:33:03.0600511Z             {
2026-07-26T22:33:03.0600640Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0600729Z               "line": 869
2026-07-26T22:33:03.0600805Z             },
2026-07-26T22:33:03.0600900Z             {
2026-07-26T22:33:03.0601020Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0601115Z               "line": 910
2026-07-26T22:33:03.0601200Z             },
2026-07-26T22:33:03.0601325Z             {
2026-07-26T22:33:03.0601444Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0601534Z               "line": 959
2026-07-26T22:33:03.0601611Z             },
2026-07-26T22:33:03.0601697Z             {
2026-07-26T22:33:03.0601810Z               "path": "crates/spt-proto/src/addr.rs",
2026-07-26T22:33:03.0601902Z               "line": 13
2026-07-26T22:33:03.0601997Z             },
2026-07-26T22:33:03.0602097Z             {
2026-07-26T22:33:03.0602213Z               "path": "crates/spt-proto/src/addr.rs",
2026-07-26T22:33:03.0602426Z               "line": 67
2026-07-26T22:33:03.0602498Z             },
2026-07-26T22:33:03.0602584Z             {
2026-07-26T22:33:03.0602688Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.0602779Z               "line": 18
2026-07-26T22:33:03.0602847Z             },
2026-07-26T22:33:03.0602942Z             {
2026-07-26T22:33:03.0603040Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.0603135Z               "line": 820
2026-07-26T22:33:03.0603216Z             }
2026-07-26T22:33:03.0603301Z           ]
2026-07-26T22:33:03.0603380Z         },
2026-07-26T22:33:03.0603462Z         "int": {
2026-07-26T22:33:03.0603554Z           "complete": false,
2026-07-26T22:33:03.0603653Z           "evidence": []
2026-07-26T22:33:03.0603724Z         },
2026-07-26T22:33:03.0603811Z         "unit": {
2026-07-26T22:33:03.0603996Z           "complete": true,
2026-07-26T22:33:03.0604086Z           "evidence": [
2026-07-26T22:33:03.0604173Z             {
2026-07-26T22:33:03.0604306Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0604382Z               "line": 1528
2026-07-26T22:33:03.0604464Z             },
2026-07-26T22:33:03.0604549Z             {
2026-07-26T22:33:03.0604663Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0604750Z               "line": 2000
2026-07-26T22:33:03.0604831Z             },
2026-07-26T22:33:03.0604907Z             {
2026-07-26T22:33:03.0605026Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0605122Z               "line": 2011
2026-07-26T22:33:03.0605207Z             },
2026-07-26T22:33:03.0605284Z             {
2026-07-26T22:33:03.0605399Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0605489Z               "line": 2027
2026-07-26T22:33:03.0605574Z             },
2026-07-26T22:33:03.0605651Z             {
2026-07-26T22:33:03.0605766Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0605870Z               "line": 2043
2026-07-26T22:33:03.0605945Z             },
2026-07-26T22:33:03.0606017Z             {
2026-07-26T22:33:03.0606132Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0606222Z               "line": 2065
2026-07-26T22:33:03.0606303Z             },
2026-07-26T22:33:03.0606379Z             {
2026-07-26T22:33:03.0606499Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0606579Z               "line": 2087
2026-07-26T22:33:03.0606656Z             },
2026-07-26T22:33:03.0606738Z             {
2026-07-26T22:33:03.0606847Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0606942Z               "line": 2110
2026-07-26T22:33:03.0607019Z             },
2026-07-26T22:33:03.0607099Z             {
2026-07-26T22:33:03.0607218Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0607315Z               "line": 2131
2026-07-26T22:33:03.0607400Z             },
2026-07-26T22:33:03.0607486Z             {
2026-07-26T22:33:03.0607600Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0607692Z               "line": 2439
2026-07-26T22:33:03.0607771Z             },
2026-07-26T22:33:03.0607862Z             {
2026-07-26T22:33:03.0607968Z               "path": "crates/spt-proto/src/addr.rs",
2026-07-26T22:33:03.0608058Z               "line": 130
2026-07-26T22:33:03.0608133Z             },
2026-07-26T22:33:03.0608223Z             {
2026-07-26T22:33:03.0608333Z               "path": "crates/spt-proto/src/addr.rs",
2026-07-26T22:33:03.0608422Z               "line": 167
2026-07-26T22:33:03.0608498Z             },
2026-07-26T22:33:03.0608579Z             {
2026-07-26T22:33:03.0608684Z               "path": "crates/spt-proto/src/addr.rs",
2026-07-26T22:33:03.0608779Z               "line": 175
2026-07-26T22:33:03.0608864Z             },
2026-07-26T22:33:03.0609027Z             {
2026-07-26T22:33:03.0609136Z               "path": "crates/spt-proto/src/addr.rs",
2026-07-26T22:33:03.0609371Z               "line": 183
2026-07-26T22:33:03.0609451Z             },
2026-07-26T22:33:03.0609533Z             {
2026-07-26T22:33:03.0609637Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.0609719Z               "line": 1420
2026-07-26T22:33:03.0609799Z             }
2026-07-26T22:33:03.0609881Z           ]
2026-07-26T22:33:03.0609962Z         }
2026-07-26T22:33:03.0610043Z       }
2026-07-26T22:33:03.0610124Z     },
2026-07-26T22:33:03.0610206Z     {
2026-07-26T22:33:03.0610300Z       "id": "REQ-INST-11",
2026-07-26T22:33:03.0610506Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-07-26T22:33:03.0610606Z       "requiredStages": [
2026-07-26T22:33:03.0610686Z         "impl",
2026-07-26T22:33:03.0610768Z         "unit"
2026-07-26T22:33:03.0610845Z       ],
2026-07-26T22:33:03.0611039Z       "stages": {
2026-07-26T22:33:03.0611114Z         "doc": {
2026-07-26T22:33:03.0611210Z           "complete": false,
2026-07-26T22:33:03.0611303Z           "evidence": []
2026-07-26T22:33:03.0611384Z         },
2026-07-26T22:33:03.0611465Z         "impl": {
2026-07-26T22:33:03.0611561Z           "complete": true,
2026-07-26T22:33:03.0611646Z           "evidence": [
2026-07-26T22:33:03.0611736Z             {
2026-07-26T22:33:03.0611857Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0611952Z               "line": 733
2026-07-26T22:33:03.0612032Z             },
2026-07-26T22:33:03.0612104Z             {
2026-07-26T22:33:03.0612224Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.0612309Z               "line": 323
2026-07-26T22:33:03.0612385Z             },
2026-07-26T22:33:03.0612477Z             {
2026-07-26T22:33:03.0612590Z               "path": "crates/spt-store/src/rename.rs",
2026-07-26T22:33:03.0612690Z               "line": 59
2026-07-26T22:33:03.0612773Z             },
2026-07-26T22:33:03.0612867Z             {
2026-07-26T22:33:03.0612986Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0613130Z               "line": 9988
2026-07-26T22:33:03.0613210Z             },
2026-07-26T22:33:03.0613306Z             {
2026-07-26T22:33:03.0613397Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0613492Z               "line": 12980
2026-07-26T22:33:03.0613567Z             }
2026-07-26T22:33:03.0613652Z           ]
2026-07-26T22:33:03.0613734Z         },
2026-07-26T22:33:03.0613856Z         "int": {
2026-07-26T22:33:03.0613950Z           "complete": false,
2026-07-26T22:33:03.0614075Z           "evidence": []
2026-07-26T22:33:03.0614157Z         },
2026-07-26T22:33:03.0614246Z         "unit": {
2026-07-26T22:33:03.0614346Z           "complete": true,
2026-07-26T22:33:03.0614433Z           "evidence": [
2026-07-26T22:33:03.0614509Z             {
2026-07-26T22:33:03.0614632Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0614719Z               "line": 2239
2026-07-26T22:33:03.0614800Z             },
2026-07-26T22:33:03.0614894Z             {
2026-07-26T22:33:03.0615001Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0615086Z               "line": 2272
2026-07-26T22:33:03.0615172Z             },
2026-07-26T22:33:03.0615257Z             {
2026-07-26T22:33:03.0615377Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.0615472Z               "line": 577
2026-07-26T22:33:03.0615557Z             },
2026-07-26T22:33:03.0615640Z             {
2026-07-26T22:33:03.0615753Z               "path": "crates/spt-store/src/rename.rs",
2026-07-26T22:33:03.0615839Z               "line": 160
2026-07-26T22:33:03.0615916Z             },
2026-07-26T22:33:03.0615997Z             {
2026-07-26T22:33:03.0616115Z               "path": "crates/spt-store/src/rename.rs",
2026-07-26T22:33:03.0616201Z               "line": 190
2026-07-26T22:33:03.0616289Z             },
2026-07-26T22:33:03.0616369Z             {
2026-07-26T22:33:03.0616481Z               "path": "crates/spt-store/src/rename.rs",
2026-07-26T22:33:03.0616654Z               "line": 225
2026-07-26T22:33:03.0616735Z             },
2026-07-26T22:33:03.0616815Z             {
2026-07-26T22:33:03.0616911Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0617002Z               "line": 15534
2026-07-26T22:33:03.0617083Z             }
2026-07-26T22:33:03.0617168Z           ]
2026-07-26T22:33:03.0617245Z         }
2026-07-26T22:33:03.0617331Z       }
2026-07-26T22:33:03.0617412Z     },
2026-07-26T22:33:03.0617497Z     {
2026-07-26T22:33:03.0617584Z       "id": "REQ-INST-12",
2026-07-26T22:33:03.0617870Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-07-26T22:33:03.0617956Z       "requiredStages": [
2026-07-26T22:33:03.0618046Z         "impl",
2026-07-26T22:33:03.0618126Z         "unit"
2026-07-26T22:33:03.0618294Z       ],
2026-07-26T22:33:03.0618374Z       "stages": {
2026-07-26T22:33:03.0618456Z         "doc": {
2026-07-26T22:33:03.0618552Z           "complete": false,
2026-07-26T22:33:03.0618651Z           "evidence": []
2026-07-26T22:33:03.0618731Z         },
2026-07-26T22:33:03.0618812Z         "impl": {
2026-07-26T22:33:03.0618908Z           "complete": true,
2026-07-26T22:33:03.0619058Z           "evidence": [
2026-07-26T22:33:03.0619139Z             {
2026-07-26T22:33:03.0619264Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0619358Z               "line": 785
2026-07-26T22:33:03.0619434Z             },
2026-07-26T22:33:03.0619516Z             {
2026-07-26T22:33:03.0619626Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0619706Z               "line": 880
2026-07-26T22:33:03.0619788Z             },
2026-07-26T22:33:03.0619864Z             {
2026-07-26T22:33:03.0619978Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0620073Z               "line": 973
2026-07-26T22:33:03.0620146Z             },
2026-07-26T22:33:03.0620221Z             {
2026-07-26T22:33:03.0620350Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:03.0620441Z               "line": 96
2026-07-26T22:33:03.0620522Z             },
2026-07-26T22:33:03.0620603Z             {
2026-07-26T22:33:03.0620707Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:03.0620800Z               "line": 269
2026-07-26T22:33:03.0620874Z             },
2026-07-26T22:33:03.0620951Z             {
2026-07-26T22:33:03.0621057Z               "path": "crates/spt-store/src/visibility.rs",
2026-07-26T22:33:03.0621152Z               "line": 148
2026-07-26T22:33:03.0621232Z             }
2026-07-26T22:33:03.0621309Z           ]
2026-07-26T22:33:03.0621386Z         },
2026-07-26T22:33:03.0621467Z         "int": {
2026-07-26T22:33:03.0621556Z           "complete": false,
2026-07-26T22:33:03.0621655Z           "evidence": []
2026-07-26T22:33:03.0624873Z         },
2026-07-26T22:33:03.0624984Z         "unit": {
2026-07-26T22:33:03.0625083Z           "complete": true,
2026-07-26T22:33:03.0625183Z           "evidence": [
2026-07-26T22:33:03.0625265Z             {
2026-07-26T22:33:03.0625408Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0625502Z               "line": 2314
2026-07-26T22:33:03.0625585Z             },
2026-07-26T22:33:03.0625670Z             {
2026-07-26T22:33:03.0625802Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0625900Z               "line": 2337
2026-07-26T22:33:03.0625989Z             },
2026-07-26T22:33:03.0626066Z             {
2026-07-26T22:33:03.0626190Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0626276Z               "line": 2374
2026-07-26T22:33:03.0626360Z             },
2026-07-26T22:33:03.0626442Z             {
2026-07-26T22:33:03.0626548Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:03.0626647Z               "line": 457
2026-07-26T22:33:03.0626728Z             },
2026-07-26T22:33:03.0626815Z             {
2026-07-26T22:33:03.0627065Z               "path": "crates/spt-store/src/visibility.rs",
2026-07-26T22:33:03.0627166Z               "line": 185
2026-07-26T22:33:03.0627257Z             },
2026-07-26T22:33:03.0627347Z             {
2026-07-26T22:33:03.0627466Z               "path": "crates/spt-store/src/visibility.rs",
2026-07-26T22:33:03.0627553Z               "line": 206
2026-07-26T22:33:03.0627629Z             },
2026-07-26T22:33:03.0627713Z             {
2026-07-26T22:33:03.0627839Z               "path": "crates/spt-store/src/visibility.rs",
2026-07-26T22:33:03.0627929Z               "line": 232
2026-07-26T22:33:03.0628009Z             }
2026-07-26T22:33:03.0628100Z           ]
2026-07-26T22:33:03.0628173Z         }
2026-07-26T22:33:03.0628252Z       }
2026-07-26T22:33:03.0628334Z     },
2026-07-26T22:33:03.0628415Z     {
2026-07-26T22:33:03.0628502Z       "id": "REQ-INST-13",
2026-07-26T22:33:03.0628817Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-07-26T22:33:03.0628915Z       "requiredStages": [
2026-07-26T22:33:03.0629122Z         "impl",
2026-07-26T22:33:03.0629206Z         "unit"
2026-07-26T22:33:03.0629291Z       ],
2026-07-26T22:33:03.0629387Z       "stages": {
2026-07-26T22:33:03.0629487Z         "doc": {
2026-07-26T22:33:03.0629589Z           "complete": false,
2026-07-26T22:33:03.0629674Z           "evidence": []
2026-07-26T22:33:03.0629756Z         },
2026-07-26T22:33:03.0629834Z         "impl": {
2026-07-26T22:33:03.0629918Z           "complete": true,
2026-07-26T22:33:03.0630014Z           "evidence": [
2026-07-26T22:33:03.0630096Z             {
2026-07-26T22:33:03.0630219Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:03.0630300Z               "line": 101
2026-07-26T22:33:03.0630387Z             },
2026-07-26T22:33:03.0630467Z             {
2026-07-26T22:33:03.0630581Z               "path": "crates/spt-store/src/visibility.rs",
2026-07-26T22:33:03.0630673Z               "line": 171
2026-07-26T22:33:03.0630749Z             }
2026-07-26T22:33:03.0630830Z           ]
2026-07-26T22:33:03.0630914Z         },
2026-07-26T22:33:03.0630997Z         "int": {
2026-07-26T22:33:03.0631096Z           "complete": false,
2026-07-26T22:33:03.0631187Z           "evidence": []
2026-07-26T22:33:03.0631282Z         },
2026-07-26T22:33:03.0631360Z         "unit": {
2026-07-26T22:33:03.0631458Z           "complete": true,
2026-07-26T22:33:03.0631544Z           "evidence": [
2026-07-26T22:33:03.0631627Z             {
2026-07-26T22:33:03.0631759Z               "path": "crates/spt-store/src/visibility.rs",
2026-07-26T22:33:03.0631835Z               "line": 261
2026-07-26T22:33:03.0631927Z             },
2026-07-26T22:33:03.0632008Z             {
2026-07-26T22:33:03.0632125Z               "path": "crates/spt-store/src/visibility.rs",
2026-07-26T22:33:03.0632215Z               "line": 279
2026-07-26T22:33:03.0632321Z             }
2026-07-26T22:33:03.0632405Z           ]
2026-07-26T22:33:03.0632532Z         }
2026-07-26T22:33:03.0632614Z       }
2026-07-26T22:33:03.0632710Z     },
2026-07-26T22:33:03.0632795Z     {
2026-07-26T22:33:03.0632924Z       "id": "REQ-INST-14",
2026-07-26T22:33:03.0633296Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-07-26T22:33:03.0633396Z       "requiredStages": [
2026-07-26T22:33:03.0633486Z         "doc",
2026-07-26T22:33:03.0633568Z         "impl",
2026-07-26T22:33:03.0633649Z         "unit"
2026-07-26T22:33:03.0633730Z       ],
2026-07-26T22:33:03.0633815Z       "stages": {
2026-07-26T22:33:03.0633893Z         "doc": {
2026-07-26T22:33:03.0633987Z           "complete": true,
2026-07-26T22:33:03.0634087Z           "evidence": [
2026-07-26T22:33:03.0634164Z             {
2026-07-26T22:33:03.0634264Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.0634359Z               "line": 692
2026-07-26T22:33:03.0634445Z             },
2026-07-26T22:33:03.0634527Z             {
2026-07-26T22:33:03.0634631Z               "path": "docs/STORAGE.md",
2026-07-26T22:33:03.0634830Z               "line": 51
2026-07-26T22:33:03.0634906Z             }
2026-07-26T22:33:03.0634985Z           ]
2026-07-26T22:33:03.0635070Z         },
2026-07-26T22:33:03.0635152Z         "impl": {
2026-07-26T22:33:03.0635253Z           "complete": true,
2026-07-26T22:33:03.0635338Z           "evidence": [
2026-07-26T22:33:03.0635428Z             {
2026-07-26T22:33:03.0635553Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0635643Z               "line": 523
2026-07-26T22:33:03.0635728Z             },
2026-07-26T22:33:03.0635806Z             {
2026-07-26T22:33:03.0635930Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0636024Z               "line": 568
2026-07-26T22:33:03.0636106Z             },
2026-07-26T22:33:03.0636182Z             {
2026-07-26T22:33:03.0636392Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.0636488Z               "line": 460
2026-07-26T22:33:03.0636563Z             },
2026-07-26T22:33:03.0636649Z             {
2026-07-26T22:33:03.0636750Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0636831Z               "line": 2881
2026-07-26T22:33:03.0636921Z             }
2026-07-26T22:33:03.0637002Z           ]
2026-07-26T22:33:03.0637084Z         },
2026-07-26T22:33:03.0637160Z         "int": {
2026-07-26T22:33:03.0637259Z           "complete": false,
2026-07-26T22:33:03.0637351Z           "evidence": []
2026-07-26T22:33:03.0637442Z         },
2026-07-26T22:33:03.0637526Z         "unit": {
2026-07-26T22:33:03.0637621Z           "complete": true,
2026-07-26T22:33:03.0637711Z           "evidence": [
2026-07-26T22:33:03.0637789Z             {
2026-07-26T22:33:03.0637907Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0637998Z               "line": 1659
2026-07-26T22:33:03.0638089Z             },
2026-07-26T22:33:03.0638160Z             {
2026-07-26T22:33:03.0638278Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0638375Z               "line": 1540
2026-07-26T22:33:03.0638461Z             },
2026-07-26T22:33:03.0638546Z             {
2026-07-26T22:33:03.0638665Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0638761Z               "line": 1819
2026-07-26T22:33:03.0638842Z             },
2026-07-26T22:33:03.0638917Z             {
2026-07-26T22:33:03.0639104Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.0639199Z               "line": 1154
2026-07-26T22:33:03.0639281Z             },
2026-07-26T22:33:03.0639367Z             {
2026-07-26T22:33:03.0639471Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0639571Z               "line": 15607
2026-07-26T22:33:03.0639658Z             }
2026-07-26T22:33:03.0639734Z           ]
2026-07-26T22:33:03.0639813Z         }
2026-07-26T22:33:03.0639899Z       }
2026-07-26T22:33:03.0639985Z     },
2026-07-26T22:33:03.0640070Z     {
2026-07-26T22:33:03.0640149Z       "id": "REQ-INST-15",
2026-07-26T22:33:03.0640850Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-07-26T22:33:03.0640947Z       "requiredStages": [
2026-07-26T22:33:03.0641027Z         "doc",
2026-07-26T22:33:03.0641113Z         "impl",
2026-07-26T22:33:03.0641189Z         "unit"
2026-07-26T22:33:03.0641276Z       ],
2026-07-26T22:33:03.0641365Z       "stages": {
2026-07-26T22:33:03.0641465Z         "doc": {
2026-07-26T22:33:03.0641547Z           "complete": true,
2026-07-26T22:33:03.0641643Z           "evidence": [
2026-07-26T22:33:03.0641719Z             {
2026-07-26T22:33:03.0641939Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-07-26T22:33:03.0642057Z               "line": 3
2026-07-26T22:33:03.0642148Z             }
2026-07-26T22:33:03.0642215Z           ]
2026-07-26T22:33:03.0642433Z         },
2026-07-26T22:33:03.0642564Z         "impl": {
2026-07-26T22:33:03.0642704Z           "complete": true,
2026-07-26T22:33:03.0642809Z           "evidence": [
2026-07-26T22:33:03.0642890Z             {
2026-07-26T22:33:03.0643031Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0643169Z               "line": 474
2026-07-26T22:33:03.0643280Z             },
2026-07-26T22:33:03.0643369Z             {
2026-07-26T22:33:03.0643484Z               "path": "crates/spt-msg/src/ready.rs",
2026-07-26T22:33:03.0643579Z               "line": 60
2026-07-26T22:33:03.0643660Z             },
2026-07-26T22:33:03.0643746Z             {
2026-07-26T22:33:03.0643871Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.0643956Z               "line": 405
2026-07-26T22:33:03.0644157Z             },
2026-07-26T22:33:03.0644232Z             {
2026-07-26T22:33:03.0644361Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.0644463Z               "line": 460
2026-07-26T22:33:03.0644542Z             },
2026-07-26T22:33:03.0644623Z             {
2026-07-26T22:33:03.0644729Z               "path": "crates/spt-store/src/home.rs",
2026-07-26T22:33:03.0644816Z               "line": 19
2026-07-26T22:33:03.0644895Z             },
2026-07-26T22:33:03.0644981Z             {
2026-07-26T22:33:03.0645082Z               "path": "crates/spt-store/src/home.rs",
2026-07-26T22:33:03.0645177Z               "line": 70
2026-07-26T22:33:03.0645257Z             },
2026-07-26T22:33:03.0645332Z             {
2026-07-26T22:33:03.0645438Z               "path": "crates/spt-store/src/home.rs",
2026-07-26T22:33:03.0645531Z               "line": 135
2026-07-26T22:33:03.0645612Z             },
2026-07-26T22:33:03.0645693Z             {
2026-07-26T22:33:03.0645808Z               "path": "crates/spt-store/src/home.rs",
2026-07-26T22:33:03.0645903Z               "line": 175
2026-07-26T22:33:03.0645993Z             },
2026-07-26T22:33:03.0646085Z             {
2026-07-26T22:33:03.0646194Z               "path": "crates/spt-store/src/home.rs",
2026-07-26T22:33:03.0646279Z               "line": 240
2026-07-26T22:33:03.0646376Z             },
2026-07-26T22:33:03.0646466Z             {
2026-07-26T22:33:03.0646584Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0646676Z               "line": 361
2026-07-26T22:33:03.0646756Z             },
2026-07-26T22:33:03.0646842Z             {
2026-07-26T22:33:03.0646942Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0647025Z               "line": 2773
2026-07-26T22:33:03.0647105Z             }
2026-07-26T22:33:03.0647186Z           ]
2026-07-26T22:33:03.0647266Z         },
2026-07-26T22:33:03.0647344Z         "int": {
2026-07-26T22:33:03.0647448Z           "complete": false,
2026-07-26T22:33:03.0647538Z           "evidence": []
2026-07-26T22:33:03.0647640Z         },
2026-07-26T22:33:03.0647729Z         "unit": {
2026-07-26T22:33:03.0647824Z           "complete": true,
2026-07-26T22:33:03.0647921Z           "evidence": [
2026-07-26T22:33:03.0647998Z             {
2026-07-26T22:33:03.0648129Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.0648219Z               "line": 627
2026-07-26T22:33:03.0648296Z             },
2026-07-26T22:33:03.0648377Z             {
2026-07-26T22:33:03.0648496Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.0648591Z               "line": 688
2026-07-26T22:33:03.0648673Z             },
2026-07-26T22:33:03.0648754Z             {
2026-07-26T22:33:03.0648857Z               "path": "crates/spt-store/src/home.rs",
2026-07-26T22:33:03.0649035Z               "line": 299
2026-07-26T22:33:03.0649115Z             },
2026-07-26T22:33:03.0649202Z             {
2026-07-26T22:33:03.0649321Z               "path": "crates/spt-store/src/home.rs",
2026-07-26T22:33:03.0649426Z               "line": 335
2026-07-26T22:33:03.0649497Z             },
2026-07-26T22:33:03.0649579Z             {
2026-07-26T22:33:03.0649797Z               "path": "crates/spt-store/src/home.rs",
2026-07-26T22:33:03.0649894Z               "line": 348
2026-07-26T22:33:03.0649979Z             },
2026-07-26T22:33:03.0650064Z             {
2026-07-26T22:33:03.0650184Z               "path": "crates/spt-store/src/home.rs",
2026-07-26T22:33:03.0650284Z               "line": 482
2026-07-26T22:33:03.0650374Z             },
2026-07-26T22:33:03.0650455Z             {
2026-07-26T22:33:03.0650573Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0650667Z               "line": 1521
2026-07-26T22:33:03.0650762Z             },
2026-07-26T22:33:03.0650839Z             {
2026-07-26T22:33:03.0650939Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0651029Z               "line": 15547
2026-07-26T22:33:03.0651105Z             },
2026-07-26T22:33:03.0651282Z             {
2026-07-26T22:33:03.0651381Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0651468Z               "line": 17912
2026-07-26T22:33:03.0651564Z             }
2026-07-26T22:33:03.0651635Z           ]
2026-07-26T22:33:03.0651720Z         }
2026-07-26T22:33:03.0651798Z       }
2026-07-26T22:33:03.0651878Z     },
2026-07-26T22:33:03.0651959Z     {
2026-07-26T22:33:03.0652064Z       "id": "REQ-INST-2",
2026-07-26T22:33:03.0652179Z       "title": "Per-node files, synced Psyche mind",
2026-07-26T22:33:03.0652269Z       "requiredStages": [
2026-07-26T22:33:03.0652345Z         "impl",
2026-07-26T22:33:03.0652427Z         "unit"
2026-07-26T22:33:03.0652504Z       ],
2026-07-26T22:33:03.0652592Z       "stages": {
2026-07-26T22:33:03.0652664Z         "doc": {
2026-07-26T22:33:03.0652766Z           "complete": false,
2026-07-26T22:33:03.0652856Z           "evidence": []
2026-07-26T22:33:03.0652936Z         },
2026-07-26T22:33:03.0653018Z         "impl": {
2026-07-26T22:33:03.0653119Z           "complete": true,
2026-07-26T22:33:03.0653204Z           "evidence": [
2026-07-26T22:33:03.0653283Z             {
2026-07-26T22:33:03.0653393Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:03.0653493Z               "line": 28
2026-07-26T22:33:03.0653577Z             },
2026-07-26T22:33:03.0653667Z             {
2026-07-26T22:33:03.0653773Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:03.0653864Z               "line": 104
2026-07-26T22:33:03.0653953Z             },
2026-07-26T22:33:03.0654035Z             {
2026-07-26T22:33:03.0654144Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:03.0654239Z               "line": 126
2026-07-26T22:33:03.0654311Z             },
2026-07-26T22:33:03.0654403Z             {
2026-07-26T22:33:03.0654508Z               "path": "crates/spt-live/src/resume.rs",
2026-07-26T22:33:03.0654592Z               "line": 55
2026-07-26T22:33:03.0654674Z             },
2026-07-26T22:33:03.0654746Z             {
2026-07-26T22:33:03.0654860Z               "path": "crates/spt-live/src/signoff.rs",
2026-07-26T22:33:03.0654945Z               "line": 118
2026-07-26T22:33:03.0655027Z             }
2026-07-26T22:33:03.0655112Z           ]
2026-07-26T22:33:03.0655202Z         },
2026-07-26T22:33:03.0655284Z         "int": {
2026-07-26T22:33:03.0655385Z           "complete": false,
2026-07-26T22:33:03.0655469Z           "evidence": []
2026-07-26T22:33:03.0655551Z         },
2026-07-26T22:33:03.0655624Z         "unit": {
2026-07-26T22:33:03.0655719Z           "complete": true,
2026-07-26T22:33:03.0655812Z           "evidence": [
2026-07-26T22:33:03.0655892Z             {
2026-07-26T22:33:03.0656003Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:03.0656092Z               "line": 408
2026-07-26T22:33:03.0656167Z             },
2026-07-26T22:33:03.0656258Z             {
2026-07-26T22:33:03.0656354Z               "path": "crates/spt-live/src/resume.rs",
2026-07-26T22:33:03.0656448Z               "line": 139
2026-07-26T22:33:03.0656539Z             }
2026-07-26T22:33:03.0656621Z           ]
2026-07-26T22:33:03.0656702Z         }
2026-07-26T22:33:03.0656863Z       }
2026-07-26T22:33:03.0656946Z     },
2026-07-26T22:33:03.0657026Z     {
2026-07-26T22:33:03.0657116Z       "id": "REQ-INST-3",
2026-07-26T22:33:03.0657270Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-07-26T22:33:03.0657364Z       "requiredStages": [
2026-07-26T22:33:03.0657449Z         "doc",
2026-07-26T22:33:03.0657541Z         "impl",
2026-07-26T22:33:03.0657627Z         "unit"
2026-07-26T22:33:03.0657713Z       ],
2026-07-26T22:33:03.0657803Z       "stages": {
2026-07-26T22:33:03.0657885Z         "doc": {
2026-07-26T22:33:03.0657979Z           "complete": true,
2026-07-26T22:33:03.0658070Z           "evidence": [
2026-07-26T22:33:03.0658161Z             {
2026-07-26T22:33:03.0658271Z               "path": "docs/DORMANCY-BUDGET.md",
2026-07-26T22:33:03.0658370Z               "line": 3
2026-07-26T22:33:03.0658447Z             }
2026-07-26T22:33:03.0658637Z           ]
2026-07-26T22:33:03.0658718Z         },
2026-07-26T22:33:03.0658808Z         "impl": {
2026-07-26T22:33:03.0658909Z           "complete": true,
2026-07-26T22:33:03.0659070Z           "evidence": [
2026-07-26T22:33:03.0659146Z             {
2026-07-26T22:33:03.0659271Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:03.0659356Z               "line": 61
2026-07-26T22:33:03.0659452Z             },
2026-07-26T22:33:03.0659528Z             {
2026-07-26T22:33:03.0659661Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.0659742Z               "line": 1200
2026-07-26T22:33:03.0659829Z             },
2026-07-26T22:33:03.0659919Z             {
2026-07-26T22:33:03.0660038Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.0660135Z               "line": 602
2026-07-26T22:33:03.0660215Z             },
2026-07-26T22:33:03.0660305Z             {
2026-07-26T22:33:03.0660425Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.0660525Z               "line": 795
2026-07-26T22:33:03.0660605Z             },
2026-07-26T22:33:03.0660696Z             {
2026-07-26T22:33:03.0660816Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.0660901Z               "line": 829
2026-07-26T22:33:03.0660976Z             },
2026-07-26T22:33:03.0661052Z             {
2026-07-26T22:33:03.0661171Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-07-26T22:33:03.0661265Z               "line": 74
2026-07-26T22:33:03.0661341Z             },
2026-07-26T22:33:03.0661490Z             {
2026-07-26T22:33:03.0661613Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0661703Z               "line": 255
2026-07-26T22:33:03.0661781Z             },
2026-07-26T22:33:03.0661899Z             {
2026-07-26T22:33:03.0662033Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0662157Z               "line": 517
2026-07-26T22:33:03.0662333Z             },
2026-07-26T22:33:03.0662495Z             {
2026-07-26T22:33:03.0662687Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0662848Z               "line": 945
2026-07-26T22:33:03.0662972Z             },
2026-07-26T22:33:03.0663101Z             {
2026-07-26T22:33:03.0663297Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0663425Z               "line": 45
2026-07-26T22:33:03.0663496Z             },
2026-07-26T22:33:03.0663588Z             {
2026-07-26T22:33:03.0663712Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0663806Z               "line": 132
2026-07-26T22:33:03.0663881Z             },
2026-07-26T22:33:03.0663963Z             {
2026-07-26T22:33:03.0664081Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0664174Z               "line": 170
2026-07-26T22:33:03.0664246Z             },
2026-07-26T22:33:03.0664333Z             {
2026-07-26T22:33:03.0664447Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0664547Z               "line": 186
2026-07-26T22:33:03.0664767Z             },
2026-07-26T22:33:03.0664852Z             {
2026-07-26T22:33:03.0664972Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0665053Z               "line": 196
2026-07-26T22:33:03.0665147Z             },
2026-07-26T22:33:03.0665224Z             {
2026-07-26T22:33:03.0665348Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0665443Z               "line": 257
2026-07-26T22:33:03.0665534Z             },
2026-07-26T22:33:03.0665616Z             {
2026-07-26T22:33:03.0665729Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0665820Z               "line": 377
2026-07-26T22:33:03.0665907Z             },
2026-07-26T22:33:03.0665983Z             {
2026-07-26T22:33:03.0666096Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0666189Z               "line": 401
2026-07-26T22:33:03.0666368Z             },
2026-07-26T22:33:03.0666444Z             {
2026-07-26T22:33:03.0666558Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0666657Z               "line": 495
2026-07-26T22:33:03.0666737Z             },
2026-07-26T22:33:03.0666823Z             {
2026-07-26T22:33:03.0666943Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0667028Z               "line": 544
2026-07-26T22:33:03.0667113Z             },
2026-07-26T22:33:03.0667196Z             {
2026-07-26T22:33:03.0667324Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-07-26T22:33:03.0667414Z               "line": 37
2026-07-26T22:33:03.0667501Z             },
2026-07-26T22:33:03.0667586Z             {
2026-07-26T22:33:03.0667709Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0667796Z               "line": 62
2026-07-26T22:33:03.0667891Z             },
2026-07-26T22:33:03.0667972Z             {
2026-07-26T22:33:03.0668101Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.0668197Z               "line": 359
2026-07-26T22:33:03.0668296Z             },
2026-07-26T22:33:03.0668368Z             {
2026-07-26T22:33:03.0668483Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0668568Z               "line": 3917
2026-07-26T22:33:03.0668658Z             }
2026-07-26T22:33:03.0668736Z           ]
2026-07-26T22:33:03.0668822Z         },
2026-07-26T22:33:03.0668906Z         "int": {
2026-07-26T22:33:03.0669079Z           "complete": false,
2026-07-26T22:33:03.0669169Z           "evidence": []
2026-07-26T22:33:03.0669287Z         },
2026-07-26T22:33:03.0669421Z         "unit": {
2026-07-26T22:33:03.0669507Z           "complete": true,
2026-07-26T22:33:03.0669606Z           "evidence": [
2026-07-26T22:33:03.0669687Z             {
2026-07-26T22:33:03.0669807Z               "path": "crates/spt-daemon/src/config.rs",
2026-07-26T22:33:03.0669897Z               "line": 447
2026-07-26T22:33:03.0669992Z             },
2026-07-26T22:33:03.0670080Z             {
2026-07-26T22:33:03.0670207Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.0670302Z               "line": 2408
2026-07-26T22:33:03.0670385Z             },
2026-07-26T22:33:03.0670460Z             {
2026-07-26T22:33:03.0670584Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.0670680Z               "line": 2465
2026-07-26T22:33:03.0670761Z             },
2026-07-26T22:33:03.0670841Z             {
2026-07-26T22:33:03.0670956Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.0671038Z               "line": 1341
2026-07-26T22:33:03.0671132Z             },
2026-07-26T22:33:03.0671208Z             {
2026-07-26T22:33:03.0671329Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.0671419Z               "line": 1466
2026-07-26T22:33:03.0671508Z             },
2026-07-26T22:33:03.0671589Z             {
2026-07-26T22:33:03.0671727Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0671816Z               "line": 1760
2026-07-26T22:33:03.0672011Z             },
2026-07-26T22:33:03.0672093Z             {
2026-07-26T22:33:03.0672225Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0672317Z               "line": 2003
2026-07-26T22:33:03.0672407Z             },
2026-07-26T22:33:03.0672488Z             {
2026-07-26T22:33:03.0672618Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0672703Z               "line": 722
2026-07-26T22:33:03.0672793Z             },
2026-07-26T22:33:03.0672864Z             {
2026-07-26T22:33:03.0673013Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0673160Z               "line": 758
2026-07-26T22:33:03.0673313Z             },
2026-07-26T22:33:03.0673427Z             {
2026-07-26T22:33:03.0673600Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0673957Z               "line": 813
2026-07-26T22:33:03.0674042Z             },
2026-07-26T22:33:03.0674123Z             {
2026-07-26T22:33:03.0674248Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0674347Z               "line": 1147
2026-07-26T22:33:03.0674432Z             },
2026-07-26T22:33:03.0674508Z             {
2026-07-26T22:33:03.0674627Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0674725Z               "line": 1394
2026-07-26T22:33:03.0674802Z             },
2026-07-26T22:33:03.0674883Z             {
2026-07-26T22:33:03.0674998Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0675092Z               "line": 1408
2026-07-26T22:33:03.0675170Z             },
2026-07-26T22:33:03.0675251Z             {
2026-07-26T22:33:03.0675374Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0675455Z               "line": 1981
2026-07-26T22:33:03.0675542Z             },
2026-07-26T22:33:03.0675623Z             {
2026-07-26T22:33:03.0675736Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.0675828Z               "line": 958
2026-07-26T22:33:03.0675908Z             },
2026-07-26T22:33:03.0675994Z             {
2026-07-26T22:33:03.0676094Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0676190Z               "line": 15571
2026-07-26T22:33:03.0676265Z             }
2026-07-26T22:33:03.0676342Z           ]
2026-07-26T22:33:03.0676424Z         }
2026-07-26T22:33:03.0676505Z       }
2026-07-26T22:33:03.0676580Z     },
2026-07-26T22:33:03.0676666Z     {
2026-07-26T22:33:03.0676754Z       "id": "REQ-INST-4",
2026-07-26T22:33:03.0676923Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-07-26T22:33:03.0677018Z       "requiredStages": [
2026-07-26T22:33:03.0677099Z         "impl",
2026-07-26T22:33:03.0677184Z         "unit"
2026-07-26T22:33:03.0677273Z       ],
2026-07-26T22:33:03.0677354Z       "stages": {
2026-07-26T22:33:03.0677450Z         "doc": {
2026-07-26T22:33:03.0677537Z           "complete": false,
2026-07-26T22:33:03.0677635Z           "evidence": []
2026-07-26T22:33:03.0677717Z         },
2026-07-26T22:33:03.0677808Z         "impl": {
2026-07-26T22:33:03.0677903Z           "complete": true,
2026-07-26T22:33:03.0678002Z           "evidence": [
2026-07-26T22:33:03.0678085Z             {
2026-07-26T22:33:03.0678213Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.0678303Z               "line": 796
2026-07-26T22:33:03.0678385Z             },
2026-07-26T22:33:03.0678475Z             {
2026-07-26T22:33:03.0678589Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0678690Z               "line": 249
2026-07-26T22:33:03.0678771Z             },
2026-07-26T22:33:03.0678861Z             {
2026-07-26T22:33:03.0679043Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0679142Z               "line": 324
2026-07-26T22:33:03.0679218Z             },
2026-07-26T22:33:03.0679311Z             {
2026-07-26T22:33:03.0679429Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0679524Z               "line": 364
2026-07-26T22:33:03.0679725Z             }
2026-07-26T22:33:03.0679809Z           ]
2026-07-26T22:33:03.0679890Z         },
2026-07-26T22:33:03.0679981Z         "int": {
2026-07-26T22:33:03.0680068Z           "complete": false,
2026-07-26T22:33:03.0680166Z           "evidence": []
2026-07-26T22:33:03.0680247Z         },
2026-07-26T22:33:03.0680339Z         "unit": {
2026-07-26T22:33:03.0680425Z           "complete": true,
2026-07-26T22:33:03.0680519Z           "evidence": [
2026-07-26T22:33:03.0680596Z             {
2026-07-26T22:33:03.0680715Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.0680795Z               "line": 2460
2026-07-26T22:33:03.0680877Z             },
2026-07-26T22:33:03.0680950Z             {
2026-07-26T22:33:03.0681068Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0681274Z               "line": 834
2026-07-26T22:33:03.0681358Z             },
2026-07-26T22:33:03.0681435Z             {
2026-07-26T22:33:03.0681550Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0681640Z               "line": 1113
2026-07-26T22:33:03.0681721Z             },
2026-07-26T22:33:03.0681797Z             {
2026-07-26T22:33:03.0681913Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0682002Z               "line": 1206
2026-07-26T22:33:03.0682078Z             }
2026-07-26T22:33:03.0682158Z           ]
2026-07-26T22:33:03.0682245Z         }
2026-07-26T22:33:03.0682324Z       }
2026-07-26T22:33:03.0682414Z     },
2026-07-26T22:33:03.0682490Z     {
2026-07-26T22:33:03.0682586Z       "id": "REQ-INST-5",
2026-07-26T22:33:03.0682752Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-07-26T22:33:03.0682848Z       "requiredStages": [
2026-07-26T22:33:03.0682934Z         "impl",
2026-07-26T22:33:03.0683019Z         "unit",
2026-07-26T22:33:03.0683119Z         "int"
2026-07-26T22:33:03.0683197Z       ],
2026-07-26T22:33:03.0683287Z       "stages": {
2026-07-26T22:33:03.0683382Z         "doc": {
2026-07-26T22:33:03.0683483Z           "complete": false,
2026-07-26T22:33:03.0683578Z           "evidence": []
2026-07-26T22:33:03.0683673Z         },
2026-07-26T22:33:03.0683754Z         "impl": {
2026-07-26T22:33:03.0683850Z           "complete": true,
2026-07-26T22:33:03.0683935Z           "evidence": [
2026-07-26T22:33:03.0684021Z             {
2026-07-26T22:33:03.0684141Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-07-26T22:33:03.0684230Z               "line": 85
2026-07-26T22:33:03.0684312Z             },
2026-07-26T22:33:03.0684388Z             {
2026-07-26T22:33:03.0684503Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:03.0684597Z               "line": 69
2026-07-26T22:33:03.0684674Z             },
2026-07-26T22:33:03.0684766Z             {
2026-07-26T22:33:03.0684888Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:03.0684987Z               "line": 100
2026-07-26T22:33:03.0685064Z             },
2026-07-26T22:33:03.0685159Z             {
2026-07-26T22:33:03.0685262Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:03.0685347Z               "line": 184
2026-07-26T22:33:03.0685429Z             },
2026-07-26T22:33:03.0685510Z             {
2026-07-26T22:33:03.0685610Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:03.0685705Z               "line": 315
2026-07-26T22:33:03.0685787Z             }
2026-07-26T22:33:03.0685877Z           ]
2026-07-26T22:33:03.0685962Z         },
2026-07-26T22:33:03.0686040Z         "int": {
2026-07-26T22:33:03.0686130Z           "complete": true,
2026-07-26T22:33:03.0686225Z           "evidence": [
2026-07-26T22:33:03.0686301Z             {
2026-07-26T22:33:03.0686431Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-07-26T22:33:03.0686511Z               "line": 157
2026-07-26T22:33:03.0686592Z             },
2026-07-26T22:33:03.0686674Z             {
2026-07-26T22:33:03.0686788Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-07-26T22:33:03.0686984Z               "line": 145
2026-07-26T22:33:03.0687065Z             },
2026-07-26T22:33:03.0687150Z             {
2026-07-26T22:33:03.0687270Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.0687356Z               "line": 764
2026-07-26T22:33:03.0687427Z             },
2026-07-26T22:33:03.0687506Z             {
2026-07-26T22:33:03.0687626Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.0687726Z               "line": 1224
2026-07-26T22:33:03.0687805Z             }
2026-07-26T22:33:03.0687890Z           ]
2026-07-26T22:33:03.0687972Z         },
2026-07-26T22:33:03.0688058Z         "unit": {
2026-07-26T22:33:03.0688153Z           "complete": true,
2026-07-26T22:33:03.0688243Z           "evidence": [
2026-07-26T22:33:03.0688325Z             {
2026-07-26T22:33:03.0688519Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:03.0688607Z               "line": 603
2026-07-26T22:33:03.0688701Z             },
2026-07-26T22:33:03.0688783Z             {
2026-07-26T22:33:03.0688892Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:03.0689058Z               "line": 646
2026-07-26T22:33:03.0689144Z             },
2026-07-26T22:33:03.0689226Z             {
2026-07-26T22:33:03.0689350Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-07-26T22:33:03.0689426Z               "line": 220
2026-07-26T22:33:03.0689507Z             }
2026-07-26T22:33:03.0689589Z           ]
2026-07-26T22:33:03.0689669Z         }
2026-07-26T22:33:03.0689751Z       }
2026-07-26T22:33:03.0689836Z     },
2026-07-26T22:33:03.0689909Z     {
2026-07-26T22:33:03.0690008Z       "id": "REQ-INST-6",
2026-07-26T22:33:03.0690190Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-07-26T22:33:03.0690290Z       "requiredStages": [
2026-07-26T22:33:03.0690374Z         "impl",
2026-07-26T22:33:03.0690455Z         "unit",
2026-07-26T22:33:03.0690536Z         "int"
2026-07-26T22:33:03.0690633Z       ],
2026-07-26T22:33:03.0690712Z       "stages": {
2026-07-26T22:33:03.0690802Z         "doc": {
2026-07-26T22:33:03.0690895Z           "complete": true,
2026-07-26T22:33:03.0690985Z           "evidence": [
2026-07-26T22:33:03.0691070Z             {
2026-07-26T22:33:03.0691166Z               "path": "docs/DEFERRED.md",
2026-07-26T22:33:03.0691251Z               "line": 13
2026-07-26T22:33:03.0691332Z             }
2026-07-26T22:33:03.0691413Z           ]
2026-07-26T22:33:03.0691490Z         },
2026-07-26T22:33:03.0691580Z         "impl": {
2026-07-26T22:33:03.0691675Z           "complete": true,
2026-07-26T22:33:03.0691756Z           "evidence": [
2026-07-26T22:33:03.0691844Z             {
2026-07-26T22:33:03.0691962Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.0695082Z               "line": 1056
2026-07-26T22:33:03.0695196Z             },
2026-07-26T22:33:03.0695288Z             {
2026-07-26T22:33:03.0695430Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-07-26T22:33:03.0695529Z               "line": 27
2026-07-26T22:33:03.0695624Z             },
2026-07-26T22:33:03.0695705Z             {
2026-07-26T22:33:03.0695832Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-07-26T22:33:03.0695912Z               "line": 74
2026-07-26T22:33:03.0695989Z             },
2026-07-26T22:33:03.0696071Z             {
2026-07-26T22:33:03.0696193Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-07-26T22:33:03.0696285Z               "line": 183
2026-07-26T22:33:03.0696371Z             },
2026-07-26T22:33:03.0696447Z             {
2026-07-26T22:33:03.0696566Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0696643Z               "line": 532
2026-07-26T22:33:03.0696724Z             },
2026-07-26T22:33:03.0696804Z             {
2026-07-26T22:33:03.0696929Z               "path": "crates/spt-net/src/net/rest.rs",
2026-07-26T22:33:03.0697014Z               "line": 31
2026-07-26T22:33:03.0697234Z             },
2026-07-26T22:33:03.0697325Z             {
2026-07-26T22:33:03.0697443Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.0697525Z               "line": 271
2026-07-26T22:33:03.0697611Z             },
2026-07-26T22:33:03.0697686Z             {
2026-07-26T22:33:03.0697791Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:03.0697878Z               "line": 129
2026-07-26T22:33:03.0697973Z             },
2026-07-26T22:33:03.0698053Z             {
2026-07-26T22:33:03.0698162Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0698252Z               "line": 3918
2026-07-26T22:33:03.0698360Z             },
2026-07-26T22:33:03.0698441Z             {
2026-07-26T22:33:03.0698546Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.0698633Z               "line": 376
2026-07-26T22:33:03.0698871Z             },
2026-07-26T22:33:03.0699089Z             {
2026-07-26T22:33:03.0699219Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.0699319Z               "line": 426
2026-07-26T22:33:03.0699408Z             }
2026-07-26T22:33:03.0699487Z           ]
2026-07-26T22:33:03.0699562Z         },
2026-07-26T22:33:03.0699648Z         "int": {
2026-07-26T22:33:03.0699748Z           "complete": true,
2026-07-26T22:33:03.0699834Z           "evidence": [
2026-07-26T22:33:03.0699920Z             {
2026-07-26T22:33:03.0700048Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.0700135Z               "line": 778
2026-07-26T22:33:03.0700225Z             },
2026-07-26T22:33:03.0700296Z             {
2026-07-26T22:33:03.0700421Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.0700502Z               "line": 1269
2026-07-26T22:33:03.0700587Z             },
2026-07-26T22:33:03.0700668Z             {
2026-07-26T22:33:03.0700783Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.0700864Z               "line": 1250
2026-07-26T22:33:03.0700948Z             }
2026-07-26T22:33:03.0701034Z           ]
2026-07-26T22:33:03.0701115Z         },
2026-07-26T22:33:03.0701198Z         "unit": {
2026-07-26T22:33:03.0701296Z           "complete": true,
2026-07-26T22:33:03.0701387Z           "evidence": [
2026-07-26T22:33:03.0701474Z             {
2026-07-26T22:33:03.0701596Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.0701682Z               "line": 1467
2026-07-26T22:33:03.0701760Z             },
2026-07-26T22:33:03.0701840Z             {
2026-07-26T22:33:03.0701968Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.0702060Z               "line": 1362
2026-07-26T22:33:03.0702141Z             },
2026-07-26T22:33:03.0702231Z             {
2026-07-26T22:33:03.0702380Z               "path": "crates/spt-net/src/net/rest.rs",
2026-07-26T22:33:03.0702488Z               "line": 66
2026-07-26T22:33:03.0702564Z             },
2026-07-26T22:33:03.0702651Z             {
2026-07-26T22:33:03.0702766Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.0702855Z               "line": 483
2026-07-26T22:33:03.0702937Z             },
2026-07-26T22:33:03.0703019Z             {
2026-07-26T22:33:03.0703136Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:03.0703222Z               "line": 304
2026-07-26T22:33:03.0703298Z             }
2026-07-26T22:33:03.0703389Z           ]
2026-07-26T22:33:03.0703463Z         }
2026-07-26T22:33:03.0703558Z       }
2026-07-26T22:33:03.0703630Z     },
2026-07-26T22:33:03.0703716Z     {
2026-07-26T22:33:03.0703820Z       "id": "REQ-INST-7",
2026-07-26T22:33:03.0703973Z       "title": "Subnet registry + bare-id resolution policy",
2026-07-26T22:33:03.0704068Z       "requiredStages": [
2026-07-26T22:33:03.0704153Z         "impl",
2026-07-26T22:33:03.0704229Z         "unit",
2026-07-26T22:33:03.0704331Z         "int"
2026-07-26T22:33:03.0704407Z       ],
2026-07-26T22:33:03.0704497Z       "stages": {
2026-07-26T22:33:03.0704579Z         "doc": {
2026-07-26T22:33:03.0704793Z           "complete": false,
2026-07-26T22:33:03.0704883Z           "evidence": []
2026-07-26T22:33:03.0704966Z         },
2026-07-26T22:33:03.0705045Z         "impl": {
2026-07-26T22:33:03.0705141Z           "complete": true,
2026-07-26T22:33:03.0705232Z           "evidence": [
2026-07-26T22:33:03.0705309Z             {
2026-07-26T22:33:03.0705427Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.0705518Z               "line": 1139
2026-07-26T22:33:03.0705600Z             },
2026-07-26T22:33:03.0705675Z             {
2026-07-26T22:33:03.0705809Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0705891Z               "line": 27
2026-07-26T22:33:03.0705971Z             },
2026-07-26T22:33:03.0706051Z             {
2026-07-26T22:33:03.0706175Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0706358Z               "line": 228
2026-07-26T22:33:03.0706448Z             },
2026-07-26T22:33:03.0706535Z             {
2026-07-26T22:33:03.0706654Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0706740Z               "line": 465
2026-07-26T22:33:03.0706816Z             },
2026-07-26T22:33:03.0706898Z             {
2026-07-26T22:33:03.0707016Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-07-26T22:33:03.0707101Z               "line": 59
2026-07-26T22:33:03.0707194Z             },
2026-07-26T22:33:03.0707274Z             {
2026-07-26T22:33:03.0707402Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0707479Z               "line": 41
2026-07-26T22:33:03.0707565Z             },
2026-07-26T22:33:03.0707646Z             {
2026-07-26T22:33:03.0707775Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-07-26T22:33:03.0707861Z               "line": 27
2026-07-26T22:33:03.0707955Z             },
2026-07-26T22:33:03.0708037Z             {
2026-07-26T22:33:03.0708157Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-07-26T22:33:03.0708251Z               "line": 124
2026-07-26T22:33:03.0708342Z             },
2026-07-26T22:33:03.0708419Z             {
2026-07-26T22:33:03.0708543Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-07-26T22:33:03.0708632Z               "line": 139
2026-07-26T22:33:03.0708717Z             },
2026-07-26T22:33:03.0708799Z             {
2026-07-26T22:33:03.0708920Z               "path": "crates/spt-store/src/registry.rs",
2026-07-26T22:33:03.0709116Z               "line": 139
2026-07-26T22:33:03.0709203Z             }
2026-07-26T22:33:03.0709292Z           ]
2026-07-26T22:33:03.0709368Z         },
2026-07-26T22:33:03.0709460Z         "int": {
2026-07-26T22:33:03.0709555Z           "complete": true,
2026-07-26T22:33:03.0709649Z           "evidence": [
2026-07-26T22:33:03.0709722Z             {
2026-07-26T22:33:03.0709855Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-07-26T22:33:03.0709945Z               "line": 145
2026-07-26T22:33:03.0710037Z             },
2026-07-26T22:33:03.0710117Z             {
2026-07-26T22:33:03.0710232Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.0710322Z               "line": 722
2026-07-26T22:33:03.0710409Z             },
2026-07-26T22:33:03.0710494Z             {
2026-07-26T22:33:03.0710613Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.0710695Z               "line": 1119
2026-07-26T22:33:03.0710785Z             }
2026-07-26T22:33:03.0710861Z           ]
2026-07-26T22:33:03.0710947Z         },
2026-07-26T22:33:03.0711029Z         "unit": {
2026-07-26T22:33:03.0711128Z           "complete": true,
2026-07-26T22:33:03.0711219Z           "evidence": [
2026-07-26T22:33:03.0711301Z             {
2026-07-26T22:33:03.0711424Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0711513Z               "line": 1630
2026-07-26T22:33:03.0711594Z             },
2026-07-26T22:33:03.0711670Z             {
2026-07-26T22:33:03.0711795Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.0712238Z               "line": 2232
2026-07-26T22:33:03.0712320Z             },
2026-07-26T22:33:03.0712405Z             {
2026-07-26T22:33:03.0712533Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-07-26T22:33:03.0712625Z               "line": 85
2026-07-26T22:33:03.0712706Z             },
2026-07-26T22:33:03.0712791Z             {
2026-07-26T22:33:03.0712906Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0713002Z               "line": 1157
2026-07-26T22:33:03.0713077Z             },
2026-07-26T22:33:03.0713163Z             {
2026-07-26T22:33:03.0713278Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0713373Z               "line": 1260
2026-07-26T22:33:03.0713454Z             },
2026-07-26T22:33:03.0713627Z             {
2026-07-26T22:33:03.0713739Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0713824Z               "line": 1275
2026-07-26T22:33:03.0713920Z             },
2026-07-26T22:33:03.0714000Z             {
2026-07-26T22:33:03.0714118Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-07-26T22:33:03.0714209Z               "line": 177
2026-07-26T22:33:03.0714295Z             },
2026-07-26T22:33:03.0714375Z             {
2026-07-26T22:33:03.0714504Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-07-26T22:33:03.0714586Z               "line": 192
2026-07-26T22:33:03.0714667Z             },
2026-07-26T22:33:03.0714742Z             {
2026-07-26T22:33:03.0714868Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-07-26T22:33:03.0714948Z               "line": 225
2026-07-26T22:33:03.0715028Z             }
2026-07-26T22:33:03.0715105Z           ]
2026-07-26T22:33:03.0715187Z         }
2026-07-26T22:33:03.0715267Z       }
2026-07-26T22:33:03.0715357Z     },
2026-07-26T22:33:03.0715438Z     {
2026-07-26T22:33:03.0715535Z       "id": "REQ-INST-8",
2026-07-26T22:33:03.0715686Z       "title": "Remote-control mode distinct from local operation",
2026-07-26T22:33:03.0715788Z       "requiredStages": [
2026-07-26T22:33:03.0715878Z         "impl",
2026-07-26T22:33:03.0715963Z         "unit",
2026-07-26T22:33:03.0716039Z         "int"
2026-07-26T22:33:03.0716117Z       ],
2026-07-26T22:33:03.0716198Z       "stages": {
2026-07-26T22:33:03.0716292Z         "doc": {
2026-07-26T22:33:03.0716379Z           "complete": false,
2026-07-26T22:33:03.0716475Z           "evidence": []
2026-07-26T22:33:03.0716559Z         },
2026-07-26T22:33:03.0716649Z         "impl": {
2026-07-26T22:33:03.0716744Z           "complete": true,
2026-07-26T22:33:03.0716844Z           "evidence": [
2026-07-26T22:33:03.0716923Z             {
2026-07-26T22:33:03.0717047Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:03.0717129Z               "line": 298
2026-07-26T22:33:03.0717219Z             },
2026-07-26T22:33:03.0717295Z             {
2026-07-26T22:33:03.0717415Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:03.0717496Z               "line": 638
2026-07-26T22:33:03.0717581Z             },
2026-07-26T22:33:03.0717662Z             {
2026-07-26T22:33:03.0717782Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:03.0717872Z               "line": 714
2026-07-26T22:33:03.0717958Z             },
2026-07-26T22:33:03.0718039Z             {
2026-07-26T22:33:03.0718153Z               "path": "crates/spt-net/src/net/attach.rs",
2026-07-26T22:33:03.0718239Z               "line": 68
2026-07-26T22:33:03.0718325Z             }
2026-07-26T22:33:03.0718412Z           ]
2026-07-26T22:33:03.0718497Z         },
2026-07-26T22:33:03.0718587Z         "int": {
2026-07-26T22:33:03.0718679Z           "complete": true,
2026-07-26T22:33:03.0718778Z           "evidence": [
2026-07-26T22:33:03.0718859Z             {
2026-07-26T22:33:03.0719060Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-07-26T22:33:03.0719140Z               "line": 422
2026-07-26T22:33:03.0719364Z             },
2026-07-26T22:33:03.0719448Z             {
2026-07-26T22:33:03.0719570Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.0719652Z               "line": 1183
2026-07-26T22:33:03.0719734Z             }
2026-07-26T22:33:03.0719819Z           ]
2026-07-26T22:33:03.0719899Z         },
2026-07-26T22:33:03.0719987Z         "unit": {
2026-07-26T22:33:03.0720086Z           "complete": true,
2026-07-26T22:33:03.0720172Z           "evidence": [
2026-07-26T22:33:03.0720262Z             {
2026-07-26T22:33:03.0720377Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:03.0720463Z               "line": 370
2026-07-26T22:33:03.0720543Z             },
2026-07-26T22:33:03.0720626Z             {
2026-07-26T22:33:03.0720744Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:03.0720936Z               "line": 777
2026-07-26T22:33:03.0721011Z             },
2026-07-26T22:33:03.0721097Z             {
2026-07-26T22:33:03.0721212Z               "path": "crates/spt-net/src/net/attach.rs",
2026-07-26T22:33:03.0721307Z               "line": 144
2026-07-26T22:33:03.0721392Z             },
2026-07-26T22:33:03.0721478Z             {
2026-07-26T22:33:03.0721585Z               "path": "crates/spt-net/src/net/attach.rs",
2026-07-26T22:33:03.0721669Z               "line": 189
2026-07-26T22:33:03.0721750Z             }
2026-07-26T22:33:03.0721827Z           ]
2026-07-26T22:33:03.0721904Z         }
2026-07-26T22:33:03.0721979Z       }
2026-07-26T22:33:03.0722055Z     },
2026-07-26T22:33:03.0722130Z     {
2026-07-26T22:33:03.0722221Z       "id": "REQ-INST-9",
2026-07-26T22:33:03.0722407Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-07-26T22:33:03.0722502Z       "requiredStages": [
2026-07-26T22:33:03.0722589Z         "impl",
2026-07-26T22:33:03.0722675Z         "unit"
2026-07-26T22:33:03.0722764Z       ],
2026-07-26T22:33:03.0722842Z       "stages": {
2026-07-26T22:33:03.0722932Z         "doc": {
2026-07-26T22:33:03.0723032Z           "complete": false,
2026-07-26T22:33:03.0723118Z           "evidence": []
2026-07-26T22:33:03.0723204Z         },
2026-07-26T22:33:03.0723289Z         "impl": {
2026-07-26T22:33:03.0723379Z           "complete": true,
2026-07-26T22:33:03.0723471Z           "evidence": [
2026-07-26T22:33:03.0723552Z             {
2026-07-26T22:33:03.0723671Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0723757Z               "line": 668
2026-07-26T22:33:03.0723838Z             }
2026-07-26T22:33:03.0723924Z           ]
2026-07-26T22:33:03.0724005Z         },
2026-07-26T22:33:03.0724095Z         "int": {
2026-07-26T22:33:03.0724177Z           "complete": false,
2026-07-26T22:33:03.0724271Z           "evidence": []
2026-07-26T22:33:03.0724342Z         },
2026-07-26T22:33:03.0724433Z         "unit": {
2026-07-26T22:33:03.0724523Z           "complete": true,
2026-07-26T22:33:03.0724621Z           "evidence": [
2026-07-26T22:33:03.0724702Z             {
2026-07-26T22:33:03.0724827Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0724917Z               "line": 2156
2026-07-26T22:33:03.0724997Z             },
2026-07-26T22:33:03.0725079Z             {
2026-07-26T22:33:03.0725203Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0725283Z               "line": 2165
2026-07-26T22:33:03.0725364Z             },
2026-07-26T22:33:03.0725442Z             {
2026-07-26T22:33:03.0725561Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0725641Z               "line": 2181
2026-07-26T22:33:03.0725718Z             },
2026-07-26T22:33:03.0725799Z             {
2026-07-26T22:33:03.0725918Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0725999Z               "line": 2193
2026-07-26T22:33:03.0726086Z             },
2026-07-26T22:33:03.0726175Z             {
2026-07-26T22:33:03.0726294Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.0726466Z               "line": 2213
2026-07-26T22:33:03.0726561Z             }
2026-07-26T22:33:03.0726638Z           ]
2026-07-26T22:33:03.0726734Z         }
2026-07-26T22:33:03.0726818Z       }
2026-07-26T22:33:03.0726900Z     },
2026-07-26T22:33:03.0726978Z     {
2026-07-26T22:33:03.0727078Z       "id": "REQ-INSTALL-1",
2026-07-26T22:33:03.0728704Z       "title": "Two install paths (harness-bootstrapped calls into standalone); OS-service registration deferred. HISTORY: originally 'signed one-line script' — the hosted one-liner retired as the PUBLIC install surface at THE-FORKENING W1/W2 (ADR-0036; the canonical bootstrap is gh + the spt install verb, REQ-INSTALL-BOOTSTRAP-VERB); installer/ scripts remain in-repo as the hermetic oneliner_e2e fixture + air-gap/mirror fallback, which is what this REQ's evidence now attests (doyle-ratified 2026-07-14).",
2026-07-26T22:33:03.0728880Z       "requiredStages": [
2026-07-26T22:33:03.0729042Z         "doc",
2026-07-26T22:33:03.0729114Z         "impl",
2026-07-26T22:33:03.0729215Z         "int"
2026-07-26T22:33:03.0729296Z       ],
2026-07-26T22:33:03.0729380Z       "stages": {
2026-07-26T22:33:03.0729467Z         "doc": {
2026-07-26T22:33:03.0729568Z           "complete": true,
2026-07-26T22:33:03.0729695Z           "evidence": [
2026-07-26T22:33:03.0729828Z             {
2026-07-26T22:33:03.0730022Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.0730145Z               "line": 865
2026-07-26T22:33:03.0730265Z             }
2026-07-26T22:33:03.0730389Z           ]
2026-07-26T22:33:03.0730512Z         },
2026-07-26T22:33:03.0730656Z         "impl": {
2026-07-26T22:33:03.0730852Z           "complete": true,
2026-07-26T22:33:03.0730947Z           "evidence": [
2026-07-26T22:33:03.0731023Z             {
2026-07-26T22:33:03.0731138Z               "path": "installer/install.ps1",
2026-07-26T22:33:03.0731228Z               "line": 59
2026-07-26T22:33:03.0731328Z             },
2026-07-26T22:33:03.0731399Z             {
2026-07-26T22:33:03.0731510Z               "path": "installer/install.sh",
2026-07-26T22:33:03.0731600Z               "line": 54
2026-07-26T22:33:03.0731685Z             }
2026-07-26T22:33:03.0731757Z           ]
2026-07-26T22:33:03.0731835Z         },
2026-07-26T22:33:03.0731909Z         "int": {
2026-07-26T22:33:03.0732005Z           "complete": true,
2026-07-26T22:33:03.0732096Z           "evidence": [
2026-07-26T22:33:03.0732182Z             {
2026-07-26T22:33:03.0732300Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-07-26T22:33:03.0732392Z               "line": 21
2026-07-26T22:33:03.0732469Z             }
2026-07-26T22:33:03.0732558Z           ]
2026-07-26T22:33:03.0732634Z         },
2026-07-26T22:33:03.0732719Z         "unit": {
2026-07-26T22:33:03.0732815Z           "complete": false,
2026-07-26T22:33:03.0732906Z           "evidence": []
2026-07-26T22:33:03.0732976Z         }
2026-07-26T22:33:03.0733067Z       }
2026-07-26T22:33:03.0733149Z     },
2026-07-26T22:33:03.0733239Z     {
2026-07-26T22:33:03.0733334Z       "id": "REQ-INSTALL-10",
2026-07-26T22:33:03.0734627Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-07-26T22:33:03.0734728Z       "requiredStages": [
2026-07-26T22:33:03.0734817Z         "impl",
2026-07-26T22:33:03.0734902Z         "unit"
2026-07-26T22:33:03.0734978Z       ],
2026-07-26T22:33:03.0735064Z       "stages": {
2026-07-26T22:33:03.0735144Z         "doc": {
2026-07-26T22:33:03.0735238Z           "complete": false,
2026-07-26T22:33:03.0735329Z           "evidence": []
2026-07-26T22:33:03.0735415Z         },
2026-07-26T22:33:03.0735496Z         "impl": {
2026-07-26T22:33:03.0735596Z           "complete": true,
2026-07-26T22:33:03.0735801Z           "evidence": [
2026-07-26T22:33:03.0735881Z             {
2026-07-26T22:33:03.0735983Z               "path": "installer/install.ps1",
2026-07-26T22:33:03.0736077Z               "line": 193
2026-07-26T22:33:03.0736158Z             }
2026-07-26T22:33:03.0736239Z           ]
2026-07-26T22:33:03.0736321Z         },
2026-07-26T22:33:03.0736402Z         "int": {
2026-07-26T22:33:03.0736497Z           "complete": false,
2026-07-26T22:33:03.0736588Z           "evidence": []
2026-07-26T22:33:03.0736674Z         },
2026-07-26T22:33:03.0736755Z         "unit": {
2026-07-26T22:33:03.0736840Z           "complete": true,
2026-07-26T22:33:03.0736927Z           "evidence": [
2026-07-26T22:33:03.0737008Z             {
2026-07-26T22:33:03.0737126Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-07-26T22:33:03.0737213Z               "line": 211
2026-07-26T22:33:03.0737397Z             }
2026-07-26T22:33:03.0737479Z           ]
2026-07-26T22:33:03.0737562Z         }
2026-07-26T22:33:03.0737647Z       }
2026-07-26T22:33:03.0737740Z     },
2026-07-26T22:33:03.0737821Z     {
2026-07-26T22:33:03.0737926Z       "id": "REQ-INSTALL-11",
2026-07-26T22:33:03.0739785Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-07-26T22:33:03.0739889Z       "requiredStages": [
2026-07-26T22:33:03.0739989Z         "doc",
2026-07-26T22:33:03.0740075Z         "impl",
2026-07-26T22:33:03.0740162Z         "unit"
2026-07-26T22:33:03.0740241Z       ],
2026-07-26T22:33:03.0740336Z       "stages": {
2026-07-26T22:33:03.0740417Z         "doc": {
2026-07-26T22:33:03.0740517Z           "complete": true,
2026-07-26T22:33:03.0740591Z           "evidence": [
2026-07-26T22:33:03.0740672Z             {
2026-07-26T22:33:03.0740767Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.0740864Z               "line": 168
2026-07-26T22:33:03.0740944Z             },
2026-07-26T22:33:03.0741034Z             {
2026-07-26T22:33:03.0741145Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0741244Z               "line": 544
2026-07-26T22:33:03.0741330Z             },
2026-07-26T22:33:03.0741417Z             {
2026-07-26T22:33:03.0741512Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.0741606Z               "line": 100
2026-07-26T22:33:03.0741683Z             },
2026-07-26T22:33:03.0741765Z             {
2026-07-26T22:33:03.0741864Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.0741960Z               "line": 361
2026-07-26T22:33:03.0742036Z             }
2026-07-26T22:33:03.0742131Z           ]
2026-07-26T22:33:03.0742212Z         },
2026-07-26T22:33:03.0742293Z         "impl": {
2026-07-26T22:33:03.0742385Z           "complete": true,
2026-07-26T22:33:03.0742479Z           "evidence": [
2026-07-26T22:33:03.0742565Z             {
2026-07-26T22:33:03.0742715Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:03.0742808Z               "line": 287
2026-07-26T22:33:03.0742885Z             },
2026-07-26T22:33:03.0742972Z             {
2026-07-26T22:33:03.0743104Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.0743189Z               "line": 271
2026-07-26T22:33:03.0743269Z             },
2026-07-26T22:33:03.0743356Z             {
2026-07-26T22:33:03.0743475Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.0743574Z               "line": 339
2026-07-26T22:33:03.0743656Z             },
2026-07-26T22:33:03.0743742Z             {
2026-07-26T22:33:03.0743866Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.0744062Z               "line": 361
2026-07-26T22:33:03.0744147Z             },
2026-07-26T22:33:03.0744233Z             {
2026-07-26T22:33:03.0744352Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.0744448Z               "line": 422
2026-07-26T22:33:03.0744523Z             },
2026-07-26T22:33:03.0744601Z             {
2026-07-26T22:33:03.0744719Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.0744805Z               "line": 436
2026-07-26T22:33:03.0744882Z             },
2026-07-26T22:33:03.0744963Z             {
2026-07-26T22:33:03.0745086Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.0745182Z               "line": 228
2026-07-26T22:33:03.0745264Z             },
2026-07-26T22:33:03.0745472Z             {
2026-07-26T22:33:03.0745586Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.0745676Z               "line": 457
2026-07-26T22:33:03.0745755Z             },
2026-07-26T22:33:03.0745836Z             {
2026-07-26T22:33:03.0745952Z               "path": "crates/spt-live/src/digest.rs",
2026-07-26T22:33:03.0746047Z               "line": 88
2026-07-26T22:33:03.0746132Z             },
2026-07-26T22:33:03.0746219Z             {
2026-07-26T22:33:03.0746333Z               "path": "crates/spt-live/src/digest.rs",
2026-07-26T22:33:03.0746427Z               "line": 104
2026-07-26T22:33:03.0746509Z             },
2026-07-26T22:33:03.0746596Z             {
2026-07-26T22:33:03.0746709Z               "path": "crates/spt-live/src/digest.rs",
2026-07-26T22:33:03.0746790Z               "line": 129
2026-07-26T22:33:03.0746867Z             },
2026-07-26T22:33:03.0746953Z             {
2026-07-26T22:33:03.0747075Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0747163Z               "line": 521
2026-07-26T22:33:03.0747253Z             },
2026-07-26T22:33:03.0747329Z             {
2026-07-26T22:33:03.0747453Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0747549Z               "line": 692
2026-07-26T22:33:03.0747638Z             },
2026-07-26T22:33:03.0747710Z             {
2026-07-26T22:33:03.0747831Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0747911Z               "line": 773
2026-07-26T22:33:03.0748002Z             },
2026-07-26T22:33:03.0748078Z             {
2026-07-26T22:33:03.0748203Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0748287Z               "line": 990
2026-07-26T22:33:03.0748367Z             },
2026-07-26T22:33:03.0748453Z             {
2026-07-26T22:33:03.0748576Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0748660Z               "line": 1013
2026-07-26T22:33:03.0748742Z             },
2026-07-26T22:33:03.0748814Z             {
2026-07-26T22:33:03.0749023Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0749115Z               "line": 1028
2026-07-26T22:33:03.0749210Z             },
2026-07-26T22:33:03.0749294Z             {
2026-07-26T22:33:03.0749401Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:03.0749482Z               "line": 603
2026-07-26T22:33:03.0749563Z             },
2026-07-26T22:33:03.0749638Z             {
2026-07-26T22:33:03.0749758Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.0749852Z               "line": 221
2026-07-26T22:33:03.0749929Z             }
2026-07-26T22:33:03.0750005Z           ]
2026-07-26T22:33:03.0750088Z         },
2026-07-26T22:33:03.0750172Z         "int": {
2026-07-26T22:33:03.0750267Z           "complete": false,
2026-07-26T22:33:03.0750359Z           "evidence": []
2026-07-26T22:33:03.0750445Z         },
2026-07-26T22:33:03.0750529Z         "unit": {
2026-07-26T22:33:03.0750621Z           "complete": true,
2026-07-26T22:33:03.0750712Z           "evidence": [
2026-07-26T22:33:03.0750788Z             {
2026-07-26T22:33:03.0750911Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.0751151Z               "line": 472
2026-07-26T22:33:03.0751227Z             },
2026-07-26T22:33:03.0751304Z             {
2026-07-26T22:33:03.0751429Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0751513Z               "line": 1623
2026-07-26T22:33:03.0751604Z             },
2026-07-26T22:33:03.0751682Z             {
2026-07-26T22:33:03.0751800Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0751885Z               "line": 1635
2026-07-26T22:33:03.0751967Z             },
2026-07-26T22:33:03.0752038Z             {
2026-07-26T22:33:03.0752157Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0752243Z               "line": 1644
2026-07-26T22:33:03.0752335Z             }
2026-07-26T22:33:03.0752510Z           ]
2026-07-26T22:33:03.0752601Z         }
2026-07-26T22:33:03.0752673Z       }
2026-07-26T22:33:03.0752754Z     },
2026-07-26T22:33:03.0752834Z     {
2026-07-26T22:33:03.0752955Z       "id": "REQ-INSTALL-12",
2026-07-26T22:33:03.0755580Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-07-26T22:33:03.0755685Z       "requiredStages": [
2026-07-26T22:33:03.0755785Z         "doc",
2026-07-26T22:33:03.0755862Z         "impl",
2026-07-26T22:33:03.0755947Z         "unit",
2026-07-26T22:33:03.0756027Z         "int"
2026-07-26T22:33:03.0756108Z       ],
2026-07-26T22:33:03.0756189Z       "stages": {
2026-07-26T22:33:03.0756268Z         "doc": {
2026-07-26T22:33:03.0756363Z           "complete": true,
2026-07-26T22:33:03.0756454Z           "evidence": [
2026-07-26T22:33:03.0756526Z             {
2026-07-26T22:33:03.0756621Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.0756706Z               "line": 215
2026-07-26T22:33:03.0756793Z             }
2026-07-26T22:33:03.0756879Z           ]
2026-07-26T22:33:03.0756959Z         },
2026-07-26T22:33:03.0757040Z         "impl": {
2026-07-26T22:33:03.0757141Z           "complete": true,
2026-07-26T22:33:03.0757222Z           "evidence": [
2026-07-26T22:33:03.0757316Z             {
2026-07-26T22:33:03.0757437Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-07-26T22:33:03.0757536Z               "line": 27
2026-07-26T22:33:03.0757617Z             },
2026-07-26T22:33:03.0757698Z             {
2026-07-26T22:33:03.0757813Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-07-26T22:33:03.0757908Z               "line": 229
2026-07-26T22:33:03.0757994Z             },
2026-07-26T22:33:03.0758085Z             {
2026-07-26T22:33:03.0758194Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0758284Z               "line": 10635
2026-07-26T22:33:03.0758367Z             }
2026-07-26T22:33:03.0758457Z           ]
2026-07-26T22:33:03.0758537Z         },
2026-07-26T22:33:03.0758619Z         "int": {
2026-07-26T22:33:03.0758706Z           "complete": true,
2026-07-26T22:33:03.0758800Z           "evidence": [
2026-07-26T22:33:03.0758880Z             {
2026-07-26T22:33:03.0759094Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-07-26T22:33:03.0759188Z               "line": 19
2026-07-26T22:33:03.0759263Z             }
2026-07-26T22:33:03.0759446Z           ]
2026-07-26T22:33:03.0759530Z         },
2026-07-26T22:33:03.0759626Z         "unit": {
2026-07-26T22:33:03.0759718Z           "complete": true,
2026-07-26T22:33:03.0759808Z           "evidence": [
2026-07-26T22:33:03.0759888Z             {
2026-07-26T22:33:03.0760013Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-07-26T22:33:03.0760094Z               "line": 401
2026-07-26T22:33:03.0760169Z             },
2026-07-26T22:33:03.0760246Z             {
2026-07-26T22:33:03.0760366Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-07-26T22:33:03.0760456Z               "line": 427
2026-07-26T22:33:03.0760551Z             },
2026-07-26T22:33:03.0760624Z             {
2026-07-26T22:33:03.0760746Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-07-26T22:33:03.0760832Z               "line": 446
2026-07-26T22:33:03.0761066Z             },
2026-07-26T22:33:03.0761142Z             {
2026-07-26T22:33:03.0761263Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-07-26T22:33:03.0761362Z               "line": 481
2026-07-26T22:33:03.0761442Z             },
2026-07-26T22:33:03.0761517Z             {
2026-07-26T22:33:03.0761623Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0761716Z               "line": 16365
2026-07-26T22:33:03.0761787Z             }
2026-07-26T22:33:03.0761864Z           ]
2026-07-26T22:33:03.0761946Z         }
2026-07-26T22:33:03.0762027Z       }
2026-07-26T22:33:03.0762107Z     },
2026-07-26T22:33:03.0762183Z     {
2026-07-26T22:33:03.0762284Z       "id": "REQ-INSTALL-13",
2026-07-26T22:33:03.0765077Z       "title": "Adapter add is non-destructive & idempotent-safe (F-018): `spt adapter add --github|--release` REFUSES when the target `_github/<safe>` home already backs an ACTIVE registered record — emitting an actionable code (ADAPTER_ADD_ALREADY_REGISTERED) that routes to `spt adapter update <name>` (refresh in place) or `spt adapter remove <name>` then re-add (replace) — instead of clobbering the live install (the perri footgun: `add --github` over a `--release` pointer git-cloned a source tree over the extracted built binaries → registered pointer dangled → cryptic `os error 2`). And when it DOES (re)populate the home it STAGES-THEN-SWAPS (clone/extract to a sibling staging dir, swap into place only on success) so a failed fetch/clone never strands the previously-extracted manifest+binaries as a dangling pointer (the os-2 / DeferredManifest class). Mirrors the safe stage-then-swap `adapter update` already uses (REQ-UPD-9, apply_release_crc_swap). (v0.14.1)",
2026-07-26T22:33:03.0765187Z       "requiredStages": [
2026-07-26T22:33:03.0765272Z         "doc",
2026-07-26T22:33:03.0765358Z         "impl",
2026-07-26T22:33:03.0765440Z         "unit"
2026-07-26T22:33:03.0765520Z       ],
2026-07-26T22:33:03.0765610Z       "stages": {
2026-07-26T22:33:03.0765692Z         "doc": {
2026-07-26T22:33:03.0765788Z           "complete": true,
2026-07-26T22:33:03.0765873Z           "evidence": [
2026-07-26T22:33:03.0765968Z             {
2026-07-26T22:33:03.0766065Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.0766159Z               "line": 882
2026-07-26T22:33:03.0766240Z             }
2026-07-26T22:33:03.0766321Z           ]
2026-07-26T22:33:03.0766404Z         },
2026-07-26T22:33:03.0766483Z         "impl": {
2026-07-26T22:33:03.0766577Z           "complete": true,
2026-07-26T22:33:03.0766663Z           "evidence": [
2026-07-26T22:33:03.0766744Z             {
2026-07-26T22:33:03.0766857Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0766942Z               "line": 6469
2026-07-26T22:33:03.0767038Z             },
2026-07-26T22:33:03.0767120Z             {
2026-07-26T22:33:03.0767224Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0767305Z               "line": 10141
2026-07-26T22:33:03.0767391Z             },
2026-07-26T22:33:03.0767481Z             {
2026-07-26T22:33:03.0767581Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0767678Z               "line": 10279
2026-07-26T22:33:03.0767843Z             },
2026-07-26T22:33:03.0767930Z             {
2026-07-26T22:33:03.0768035Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0768130Z               "line": 10311
2026-07-26T22:33:03.0768215Z             }
2026-07-26T22:33:03.0768293Z           ]
2026-07-26T22:33:03.0768378Z         },
2026-07-26T22:33:03.0768463Z         "int": {
2026-07-26T22:33:03.0768554Z           "complete": false,
2026-07-26T22:33:03.0768650Z           "evidence": []
2026-07-26T22:33:03.0768735Z         },
2026-07-26T22:33:03.0768821Z         "unit": {
2026-07-26T22:33:03.0768898Z           "complete": true,
2026-07-26T22:33:03.0769078Z           "evidence": [
2026-07-26T22:33:03.0769160Z             {
2026-07-26T22:33:03.0769271Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0769360Z               "line": 19898
2026-07-26T22:33:03.0769545Z             },
2026-07-26T22:33:03.0769621Z             {
2026-07-26T22:33:03.0769714Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0769795Z               "line": 19942
2026-07-26T22:33:03.0769891Z             }
2026-07-26T22:33:03.0769968Z           ]
2026-07-26T22:33:03.0773287Z         }
2026-07-26T22:33:03.0773398Z       }
2026-07-26T22:33:03.0773483Z     },
2026-07-26T22:33:03.0773564Z     {
2026-07-26T22:33:03.0773673Z       "id": "REQ-INSTALL-2",
2026-07-26T22:33:03.0773822Z       "title": "Marketplace-repackaging-friendly install",
2026-07-26T22:33:03.0773916Z       "requiredStages": [
2026-07-26T22:33:03.0774007Z         "doc"
2026-07-26T22:33:03.0774089Z       ],
2026-07-26T22:33:03.0774174Z       "stages": {
2026-07-26T22:33:03.0774259Z         "doc": {
2026-07-26T22:33:03.0774356Z           "complete": true,
2026-07-26T22:33:03.0774456Z           "evidence": [
2026-07-26T22:33:03.0774536Z             {
2026-07-26T22:33:03.0774647Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.0774738Z               "line": 866
2026-07-26T22:33:03.0774817Z             }
2026-07-26T22:33:03.0774898Z           ]
2026-07-26T22:33:03.0774984Z         },
2026-07-26T22:33:03.0775070Z         "impl": {
2026-07-26T22:33:03.0775165Z           "complete": false,
2026-07-26T22:33:03.0775255Z           "evidence": []
2026-07-26T22:33:03.0775332Z         },
2026-07-26T22:33:03.0775418Z         "int": {
2026-07-26T22:33:03.0775512Z           "complete": false,
2026-07-26T22:33:03.0775593Z           "evidence": []
2026-07-26T22:33:03.0775676Z         },
2026-07-26T22:33:03.0775756Z         "unit": {
2026-07-26T22:33:03.0775846Z           "complete": false,
2026-07-26T22:33:03.0775928Z           "evidence": []
2026-07-26T22:33:03.0776015Z         }
2026-07-26T22:33:03.0776090Z       }
2026-07-26T22:33:03.0776170Z     },
2026-07-26T22:33:03.0776252Z     {
2026-07-26T22:33:03.0776353Z       "id": "REQ-INSTALL-3",
2026-07-26T22:33:03.0776509Z       "title": "Idempotent + interactive-optional first run",
2026-07-26T22:33:03.0776606Z       "requiredStages": [
2026-07-26T22:33:03.0776691Z         "impl",
2026-07-26T22:33:03.0776776Z         "int"
2026-07-26T22:33:03.0776848Z       ],
2026-07-26T22:33:03.0776935Z       "stages": {
2026-07-26T22:33:03.0777062Z         "doc": {
2026-07-26T22:33:03.0777171Z           "complete": false,
2026-07-26T22:33:03.0777271Z           "evidence": []
2026-07-26T22:33:03.0777351Z         },
2026-07-26T22:33:03.0777446Z         "impl": {
2026-07-26T22:33:03.0777536Z           "complete": true,
2026-07-26T22:33:03.0777632Z           "evidence": [
2026-07-26T22:33:03.0777708Z             {
2026-07-26T22:33:03.0777826Z               "path": "installer/install.ps1",
2026-07-26T22:33:03.0777918Z               "line": 102
2026-07-26T22:33:03.0778004Z             },
2026-07-26T22:33:03.0778074Z             {
2026-07-26T22:33:03.0778189Z               "path": "installer/install.ps1",
2026-07-26T22:33:03.0778276Z               "line": 113
2026-07-26T22:33:03.0778375Z             },
2026-07-26T22:33:03.0778456Z             {
2026-07-26T22:33:03.0778567Z               "path": "installer/install.sh",
2026-07-26T22:33:03.0778795Z               "line": 81
2026-07-26T22:33:03.0778886Z             }
2026-07-26T22:33:03.0779038Z           ]
2026-07-26T22:33:03.0779124Z         },
2026-07-26T22:33:03.0779206Z         "int": {
2026-07-26T22:33:03.0779314Z           "complete": true,
2026-07-26T22:33:03.0779396Z           "evidence": [
2026-07-26T22:33:03.0779483Z             {
2026-07-26T22:33:03.0779614Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-07-26T22:33:03.0779720Z               "line": 167
2026-07-26T22:33:03.0779802Z             }
2026-07-26T22:33:03.0779892Z           ]
2026-07-26T22:33:03.0779972Z         },
2026-07-26T22:33:03.0780062Z         "unit": {
2026-07-26T22:33:03.0780153Z           "complete": false,
2026-07-26T22:33:03.0780246Z           "evidence": []
2026-07-26T22:33:03.0780331Z         }
2026-07-26T22:33:03.0780542Z       }
2026-07-26T22:33:03.0780627Z     },
2026-07-26T22:33:03.0780718Z     {
2026-07-26T22:33:03.0780809Z       "id": "REQ-INSTALL-4",
2026-07-26T22:33:03.0781448Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-07-26T22:33:03.0781533Z       "requiredStages": [
2026-07-26T22:33:03.0781619Z         "impl",
2026-07-26T22:33:03.0781696Z         "unit"
2026-07-26T22:33:03.0781782Z       ],
2026-07-26T22:33:03.0781872Z       "stages": {
2026-07-26T22:33:03.0781996Z         "doc": {
2026-07-26T22:33:03.0782121Z           "complete": false,
2026-07-26T22:33:03.0782234Z           "evidence": []
2026-07-26T22:33:03.0782345Z         },
2026-07-26T22:33:03.0782468Z         "impl": {
2026-07-26T22:33:03.0782595Z           "complete": true,
2026-07-26T22:33:03.0782748Z           "evidence": [
2026-07-26T22:33:03.0782931Z             {
2026-07-26T22:33:03.0783080Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-07-26T22:33:03.0783170Z               "line": 165
2026-07-26T22:33:03.0783260Z             },
2026-07-26T22:33:03.0783342Z             {
2026-07-26T22:33:03.0783457Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0783551Z               "line": 29
2026-07-26T22:33:03.0783633Z             },
2026-07-26T22:33:03.0783714Z             {
2026-07-26T22:33:03.0783833Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0783928Z               "line": 299
2026-07-26T22:33:03.0784010Z             },
2026-07-26T22:33:03.0784090Z             {
2026-07-26T22:33:03.0784209Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0784296Z               "line": 417
2026-07-26T22:33:03.0784372Z             },
2026-07-26T22:33:03.0784458Z             {
2026-07-26T22:33:03.0784572Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0784668Z               "line": 447
2026-07-26T22:33:03.0784743Z             },
2026-07-26T22:33:03.0784824Z             {
2026-07-26T22:33:03.0784940Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0785039Z               "line": 495
2026-07-26T22:33:03.0785121Z             },
2026-07-26T22:33:03.0785207Z             {
2026-07-26T22:33:03.0785308Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0785406Z               "line": 10158
2026-07-26T22:33:03.0785486Z             }
2026-07-26T22:33:03.0785568Z           ]
2026-07-26T22:33:03.0785644Z         },
2026-07-26T22:33:03.0785730Z         "int": {
2026-07-26T22:33:03.0785820Z           "complete": false,
2026-07-26T22:33:03.0785906Z           "evidence": []
2026-07-26T22:33:03.0785978Z         },
2026-07-26T22:33:03.0786073Z         "unit": {
2026-07-26T22:33:03.0786163Z           "complete": true,
2026-07-26T22:33:03.0786260Z           "evidence": [
2026-07-26T22:33:03.0786341Z             {
2026-07-26T22:33:03.0786483Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-07-26T22:33:03.0786565Z               "line": 381
2026-07-26T22:33:03.0786788Z             },
2026-07-26T22:33:03.0786870Z             {
2026-07-26T22:33:03.0786993Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0787079Z               "line": 935
2026-07-26T22:33:03.0787161Z             },
2026-07-26T22:33:03.0787242Z             {
2026-07-26T22:33:03.0787360Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0787456Z               "line": 1058
2026-07-26T22:33:03.0787538Z             },
2026-07-26T22:33:03.0787617Z             {
2026-07-26T22:33:03.0787736Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0787831Z               "line": 1078
2026-07-26T22:33:03.0787907Z             },
2026-07-26T22:33:03.0787996Z             {
2026-07-26T22:33:03.0788101Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0788273Z               "line": 15961
2026-07-26T22:33:03.0788353Z             }
2026-07-26T22:33:03.0788439Z           ]
2026-07-26T22:33:03.0788521Z         }
2026-07-26T22:33:03.0788611Z       }
2026-07-26T22:33:03.0788682Z     },
2026-07-26T22:33:03.0788759Z     {
2026-07-26T22:33:03.0788854Z       "id": "REQ-INSTALL-5",
2026-07-26T22:33:03.0790551Z       "title": "Non-interactive install path: the install path doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration. HISTORY: 'the canonical one-liner' — since THE-FORKENING (ADR-0036) the canonical path is gh + the spt install verb (itself non-interactive, REQ-INSTALL-BOOTSTRAP-VERB); the scripts this REQ's evidence attests remain as the hermetic CI fixture + air-gap fallback, still non-interactive by construction (doyle-ratified 2026-07-14).",
2026-07-26T22:33:03.0790651Z       "requiredStages": [
2026-07-26T22:33:03.0790737Z         "impl",
2026-07-26T22:33:03.0790820Z         "int"
2026-07-26T22:33:03.0790901Z       ],
2026-07-26T22:33:03.0790978Z       "stages": {
2026-07-26T22:33:03.0791059Z         "doc": {
2026-07-26T22:33:03.0791173Z           "complete": false,
2026-07-26T22:33:03.0791263Z           "evidence": []
2026-07-26T22:33:03.0791346Z         },
2026-07-26T22:33:03.0791421Z         "impl": {
2026-07-26T22:33:03.0791521Z           "complete": true,
2026-07-26T22:33:03.0791602Z           "evidence": [
2026-07-26T22:33:03.0791693Z             {
2026-07-26T22:33:03.0791835Z               "path": "installer/install.ps1",
2026-07-26T22:33:03.0791922Z               "line": 7
2026-07-26T22:33:03.0792013Z             },
2026-07-26T22:33:03.0792141Z             {
2026-07-26T22:33:03.0792295Z               "path": "installer/install.sh",
2026-07-26T22:33:03.0792422Z               "line": 8
2026-07-26T22:33:03.0792499Z             }
2026-07-26T22:33:03.0792585Z           ]
2026-07-26T22:33:03.0792685Z         },
2026-07-26T22:33:03.0792770Z         "int": {
2026-07-26T22:33:03.0792871Z           "complete": true,
2026-07-26T22:33:03.0792962Z           "evidence": [
2026-07-26T22:33:03.0793038Z             {
2026-07-26T22:33:03.0793165Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-07-26T22:33:03.0793251Z               "line": 22
2026-07-26T22:33:03.0793336Z             }
2026-07-26T22:33:03.0793416Z           ]
2026-07-26T22:33:03.0793496Z         },
2026-07-26T22:33:03.0793578Z         "unit": {
2026-07-26T22:33:03.0793679Z           "complete": false,
2026-07-26T22:33:03.0793773Z           "evidence": []
2026-07-26T22:33:03.0793854Z         }
2026-07-26T22:33:03.0793936Z       }
2026-07-26T22:33:03.0794017Z     },
2026-07-26T22:33:03.0794088Z     {
2026-07-26T22:33:03.0794173Z       "id": "REQ-INSTALL-6",
2026-07-26T22:33:03.0795347Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-07-26T22:33:03.0795576Z       "requiredStages": [
2026-07-26T22:33:03.0795656Z         "impl",
2026-07-26T22:33:03.0795738Z         "unit"
2026-07-26T22:33:03.0795820Z       ],
2026-07-26T22:33:03.0795905Z       "stages": {
2026-07-26T22:33:03.0795984Z         "doc": {
2026-07-26T22:33:03.0796079Z           "complete": false,
2026-07-26T22:33:03.0796176Z           "evidence": []
2026-07-26T22:33:03.0796262Z         },
2026-07-26T22:33:03.0796351Z         "impl": {
2026-07-26T22:33:03.0796433Z           "complete": true,
2026-07-26T22:33:03.0796529Z           "evidence": [
2026-07-26T22:33:03.0796610Z             {
2026-07-26T22:33:03.0796733Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0796825Z               "line": 72
2026-07-26T22:33:03.0796911Z             },
2026-07-26T22:33:03.0796995Z             {
2026-07-26T22:33:03.0797224Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.0797309Z               "line": 795
2026-07-26T22:33:03.0797397Z             },
2026-07-26T22:33:03.0797483Z             {
2026-07-26T22:33:03.0797606Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-07-26T22:33:03.0797697Z               "line": 191
2026-07-26T22:33:03.0797783Z             },
2026-07-26T22:33:03.0797863Z             {
2026-07-26T22:33:03.0797983Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-07-26T22:33:03.0798065Z               "line": 276
2026-07-26T22:33:03.0798164Z             },
2026-07-26T22:33:03.0798244Z             {
2026-07-26T22:33:03.0798354Z               "path": "crates/spt/src/main.rs",
2026-07-26T22:33:03.0798435Z               "line": 88
2026-07-26T22:33:03.0798518Z             },
2026-07-26T22:33:03.0798599Z             {
2026-07-26T22:33:03.0798704Z               "path": "installer/install.sh",
2026-07-26T22:33:03.0798786Z               "line": 106
2026-07-26T22:33:03.0798875Z             }
2026-07-26T22:33:03.0799033Z           ]
2026-07-26T22:33:03.0799114Z         },
2026-07-26T22:33:03.0799204Z         "int": {
2026-07-26T22:33:03.0799315Z           "complete": false,
2026-07-26T22:33:03.0799405Z           "evidence": []
2026-07-26T22:33:03.0799491Z         },
2026-07-26T22:33:03.0799567Z         "unit": {
2026-07-26T22:33:03.0799663Z           "complete": true,
2026-07-26T22:33:03.0799753Z           "evidence": [
2026-07-26T22:33:03.0799838Z             {
2026-07-26T22:33:03.0799959Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-07-26T22:33:03.0800053Z               "line": 894
2026-07-26T22:33:03.0800130Z             }
2026-07-26T22:33:03.0800220Z           ]
2026-07-26T22:33:03.0800293Z         }
2026-07-26T22:33:03.0800382Z       }
2026-07-26T22:33:03.0800463Z     },
2026-07-26T22:33:03.0800549Z     {
2026-07-26T22:33:03.0800646Z       "id": "REQ-INSTALL-7",
2026-07-26T22:33:03.0801747Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-07-26T22:33:03.0801847Z       "requiredStages": [
2026-07-26T22:33:03.0801925Z         "impl"
2026-07-26T22:33:03.0802010Z       ],
2026-07-26T22:33:03.0802095Z       "stages": {
2026-07-26T22:33:03.0802182Z         "doc": {
2026-07-26T22:33:03.0802272Z           "complete": false,
2026-07-26T22:33:03.0802358Z           "evidence": []
2026-07-26T22:33:03.0802429Z         },
2026-07-26T22:33:03.0802520Z         "impl": {
2026-07-26T22:33:03.0802611Z           "complete": true,
2026-07-26T22:33:03.0802701Z           "evidence": [
2026-07-26T22:33:03.0802782Z             {
2026-07-26T22:33:03.0802888Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0802992Z               "line": 8302
2026-07-26T22:33:03.0803083Z             },
2026-07-26T22:33:03.0803165Z             {
2026-07-26T22:33:03.0803388Z               "path": "installer/install.ps1",
2026-07-26T22:33:03.0803470Z               "line": 159
2026-07-26T22:33:03.0803560Z             }
2026-07-26T22:33:03.0803630Z           ]
2026-07-26T22:33:03.0803715Z         },
2026-07-26T22:33:03.0803796Z         "int": {
2026-07-26T22:33:03.0803891Z           "complete": false,
2026-07-26T22:33:03.0803981Z           "evidence": []
2026-07-26T22:33:03.0804056Z         },
2026-07-26T22:33:03.0804143Z         "unit": {
2026-07-26T22:33:03.0804234Z           "complete": false,
2026-07-26T22:33:03.0804324Z           "evidence": []
2026-07-26T22:33:03.0804405Z         }
2026-07-26T22:33:03.0804486Z       }
2026-07-26T22:33:03.0804572Z     },
2026-07-26T22:33:03.0804653Z     {
2026-07-26T22:33:03.0804748Z       "id": "REQ-INSTALL-8",
2026-07-26T22:33:03.0805764Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-07-26T22:33:03.0805968Z       "requiredStages": [
2026-07-26T22:33:03.0806051Z         "impl"
2026-07-26T22:33:03.0806136Z       ],
2026-07-26T22:33:03.0806226Z       "stages": {
2026-07-26T22:33:03.0806303Z         "doc": {
2026-07-26T22:33:03.0806394Z           "complete": false,
2026-07-26T22:33:03.0806488Z           "evidence": []
2026-07-26T22:33:03.0806573Z         },
2026-07-26T22:33:03.0806649Z         "impl": {
2026-07-26T22:33:03.0806751Z           "complete": true,
2026-07-26T22:33:03.0806831Z           "evidence": [
2026-07-26T22:33:03.0806911Z             {
2026-07-26T22:33:03.0807022Z               "path": "installer/install.ps1",
2026-07-26T22:33:03.0807103Z               "line": 186
2026-07-26T22:33:03.0807179Z             },
2026-07-26T22:33:03.0807259Z             {
2026-07-26T22:33:03.0807361Z               "path": "installer/install.sh",
2026-07-26T22:33:03.0807451Z               "line": 123
2026-07-26T22:33:03.0807527Z             }
2026-07-26T22:33:03.0807617Z           ]
2026-07-26T22:33:03.0807699Z         },
2026-07-26T22:33:03.0807789Z         "int": {
2026-07-26T22:33:03.0807879Z           "complete": false,
2026-07-26T22:33:03.0807967Z           "evidence": []
2026-07-26T22:33:03.0808052Z         },
2026-07-26T22:33:03.0808128Z         "unit": {
2026-07-26T22:33:03.0808218Z           "complete": false,
2026-07-26T22:33:03.0808315Z           "evidence": []
2026-07-26T22:33:03.0808400Z         }
2026-07-26T22:33:03.0808486Z       }
2026-07-26T22:33:03.0808567Z     },
2026-07-26T22:33:03.0808658Z     {
2026-07-26T22:33:03.0808747Z       "id": "REQ-INSTALL-9",
2026-07-26T22:33:03.0810023Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-07-26T22:33:03.0810136Z       "requiredStages": [
2026-07-26T22:33:03.0810218Z         "doc",
2026-07-26T22:33:03.0810308Z         "impl",
2026-07-26T22:33:03.0810385Z         "unit"
2026-07-26T22:33:03.0810475Z       ],
2026-07-26T22:33:03.0810557Z       "stages": {
2026-07-26T22:33:03.0810651Z         "doc": {
2026-07-26T22:33:03.0810742Z           "complete": true,
2026-07-26T22:33:03.0810839Z           "evidence": [
2026-07-26T22:33:03.0810915Z             {
2026-07-26T22:33:03.0811014Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.0811100Z               "line": 882
2026-07-26T22:33:03.0811182Z             }
2026-07-26T22:33:03.0811267Z           ]
2026-07-26T22:33:03.0811348Z         },
2026-07-26T22:33:03.0811434Z         "impl": {
2026-07-26T22:33:03.0811676Z           "complete": true,
2026-07-26T22:33:03.0811771Z           "evidence": [
2026-07-26T22:33:03.0811857Z             {
2026-07-26T22:33:03.0811969Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0812059Z               "line": 6304
2026-07-26T22:33:03.0812141Z             },
2026-07-26T22:33:03.0812232Z             {
2026-07-26T22:33:03.0812326Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0812427Z               "line": 6373
2026-07-26T22:33:03.0812508Z             },
2026-07-26T22:33:03.0812589Z             {
2026-07-26T22:33:03.0812689Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0812819Z               "line": 6440
2026-07-26T22:33:03.0812927Z             },
2026-07-26T22:33:03.0813037Z             {
2026-07-26T22:33:03.0813134Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0813347Z               "line": 10422
2026-07-26T22:33:03.0813429Z             },
2026-07-26T22:33:03.0813514Z             {
2026-07-26T22:33:03.0813623Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0813715Z               "line": 10434
2026-07-26T22:33:03.0813791Z             }
2026-07-26T22:33:03.0813881Z           ]
2026-07-26T22:33:03.0813953Z         },
2026-07-26T22:33:03.0814035Z         "int": {
2026-07-26T22:33:03.0814130Z           "complete": false,
2026-07-26T22:33:03.0814224Z           "evidence": []
2026-07-26T22:33:03.0814313Z         },
2026-07-26T22:33:03.0814405Z         "unit": {
2026-07-26T22:33:03.0814484Z           "complete": true,
2026-07-26T22:33:03.0814569Z           "evidence": [
2026-07-26T22:33:03.0814650Z             {
2026-07-26T22:33:03.0814751Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0814850Z               "line": 14920
2026-07-26T22:33:03.0814931Z             },
2026-07-26T22:33:03.0815018Z             {
2026-07-26T22:33:03.0815128Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0815213Z               "line": 15991
2026-07-26T22:33:03.0815289Z             }
2026-07-26T22:33:03.0815385Z           ]
2026-07-26T22:33:03.0815466Z         }
2026-07-26T22:33:03.0815542Z       }
2026-07-26T22:33:03.0815618Z     },
2026-07-26T22:33:03.0815709Z     {
2026-07-26T22:33:03.0815814Z       "id": "REQ-INSTALL-BOOTSTRAP-VERB",
2026-07-26T22:33:03.0819930Z       "title": "THE-FORKENING W1 (ADR-0036 §3, bootstrap shape b operator-ruled): virgin-box install = `gh release download` the platform binary + ONE self-install verb in the binary itself — the verb places the binary at the canonical install path (the path self-update already respawns from, v0.4.2 lesson), registers user PATH, and leaves first-run identity/daemon-start to the existing idempotent first-run; hosted one-liner install scripts (curl|sh / irm|iex at the dead Pages URL) are RETIRED. Non-interactive (CONTEXT.md Installation: the install path doubles as every adapter's pack-in on-demand install). Windows UAC-740 gotcha binding: the downloaded exe keeps the `spt-*` asset name and the verb lives INSIDE spt — no installer-detection trigger words in exe names. README (bs-core) documents: install gh -> gh auth login -> gh release download -> the verb. Gate: unit — verb places/registers idempotently, refuses cross-platform binaries (platform-stamp check exists, v0.3.2); int — from a clean SPT_HOME+PATH sim, downloaded-binary self-install yields a working `spt` on PATH whose `spt update fetch` then speaks the gh channel; doc — README install section rewritten. Kin REQ-UPDATE-GH-TRANSPORT, REQ-INSTALL-1/2 (the two-paths model this reshapes), ADR-0036.",
2026-07-26T22:33:03.0820115Z       "requiredStages": [
2026-07-26T22:33:03.0820239Z         "doc",
2026-07-26T22:33:03.0820367Z         "impl",
2026-07-26T22:33:03.0820497Z         "unit",
2026-07-26T22:33:03.0820635Z         "int"
2026-07-26T22:33:03.0820755Z       ],
2026-07-26T22:33:03.0820897Z       "stages": {
2026-07-26T22:33:03.0821064Z         "doc": {
2026-07-26T22:33:03.0821207Z           "complete": true,
2026-07-26T22:33:03.0821331Z           "evidence": [
2026-07-26T22:33:03.0821617Z             {
2026-07-26T22:33:03.0821752Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.0821883Z               "line": 873
2026-07-26T22:33:03.0821999Z             },
2026-07-26T22:33:03.0822124Z             {
2026-07-26T22:33:03.0822374Z               "path": "docs-site/src/harness-contract/install-on-demand.md",
2026-07-26T22:33:03.0822506Z               "line": 3
2026-07-26T22:33:03.0822619Z             },
2026-07-26T22:33:03.0822749Z             {
2026-07-26T22:33:03.0822896Z               "path": "docs-site/src/index.md",
2026-07-26T22:33:03.0823026Z               "line": 23
2026-07-26T22:33:03.0823145Z             },
2026-07-26T22:33:03.0823268Z             {
2026-07-26T22:33:03.0823474Z               "path": "docs-site/src/quickstart/messaging.md",
2026-07-26T22:33:03.0823665Z               "line": 16
2026-07-26T22:33:03.0823898Z             },
2026-07-26T22:33:03.0824013Z             {
2026-07-26T22:33:03.0824203Z               "path": "docs-site/src/reference/install.md",
2026-07-26T22:33:03.0824347Z               "line": 3
2026-07-26T22:33:03.0824474Z             }
2026-07-26T22:33:03.0824595Z           ]
2026-07-26T22:33:03.0824713Z         },
2026-07-26T22:33:03.0824831Z         "impl": {
2026-07-26T22:33:03.0824970Z           "complete": true,
2026-07-26T22:33:03.0825091Z           "evidence": [
2026-07-26T22:33:03.0825215Z             {
2026-07-26T22:33:03.0825378Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0825515Z               "line": 1479
2026-07-26T22:33:03.0825635Z             },
2026-07-26T22:33:03.0825758Z             {
2026-07-26T22:33:03.0825912Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0826045Z               "line": 5940
2026-07-26T22:33:03.0826159Z             },
2026-07-26T22:33:03.0826283Z             {
2026-07-26T22:33:03.0826436Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0826570Z               "line": 5950
2026-07-26T22:33:03.0826693Z             },
2026-07-26T22:33:03.0826832Z             {
2026-07-26T22:33:03.0826984Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0827113Z               "line": 6000
2026-07-26T22:33:03.0827223Z             },
2026-07-26T22:33:03.0827351Z             {
2026-07-26T22:33:03.0827501Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0827622Z               "line": 6015
2026-07-26T22:33:03.0827745Z             },
2026-07-26T22:33:03.0827866Z             {
2026-07-26T22:33:03.0828008Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0828128Z               "line": 6080
2026-07-26T22:33:03.0828247Z             },
2026-07-26T22:33:03.0828375Z             {
2026-07-26T22:33:03.0828524Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0828661Z               "line": 6115
2026-07-26T22:33:03.0828782Z             }
2026-07-26T22:33:03.0828914Z           ]
2026-07-26T22:33:03.0829102Z         },
2026-07-26T22:33:03.0829224Z         "int": {
2026-07-26T22:33:03.0829368Z           "complete": true,
2026-07-26T22:33:03.0829520Z           "evidence": [
2026-07-26T22:33:03.0829634Z             {
2026-07-26T22:33:03.0829834Z               "path": "crates/spt/tests/bootstrap_verb_e2e.rs",
2026-07-26T22:33:03.0829962Z               "line": 18
2026-07-26T22:33:03.0830091Z             }
2026-07-26T22:33:03.0830208Z           ]
2026-07-26T22:33:03.0830331Z         },
2026-07-26T22:33:03.0830452Z         "unit": {
2026-07-26T22:33:03.0830589Z           "complete": true,
2026-07-26T22:33:03.0830718Z           "evidence": [
2026-07-26T22:33:03.0830842Z             {
2026-07-26T22:33:03.0830990Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0831128Z               "line": 18791
2026-07-26T22:33:03.0831251Z             },
2026-07-26T22:33:03.0831362Z             {
2026-07-26T22:33:03.0831519Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0831654Z               "line": 18809
2026-07-26T22:33:03.0831786Z             }
2026-07-26T22:33:03.0831900Z           ]
2026-07-26T22:33:03.0832168Z         }
2026-07-26T22:33:03.0832288Z       }
2026-07-26T22:33:03.0832406Z     },
2026-07-26T22:33:03.0832520Z     {
2026-07-26T22:33:03.0832693Z       "id": "REQ-JOIN-DEFERRED-ELEVATION",
2026-07-26T22:33:03.0838225Z       "title": "W2 (JOIN-TRUTH, operator UX ruling verbatim): 'if --code was not supplied, don't spawn the elevated subnet-join window until a target machine is discovered → just in time for the code prompt.' When --code is ABSENT and the process is UNELEVATED, run the name prompt + ALREADY_MEMBER check + ensure_daemon + the MEET phase (brain.pair_meet) UNELEVATED; only on MetMember spawn the elevated window via the EXISTING try_auto_elevate machinery (the elevated re-run re-executes the join flow — its second meet is cheap, the member is proven present). A FAILED search must NEVER show a UAC/sudo/pkexec prompt. The --code path is UNCHANGED (gate-first, one-shot). The unelevated phase performs ZERO trust mutation — meet is pre-trust per REQ-JOIN-TWO-PHASE/ADR-0030. RULED OUT (doyle): cross-elevation hold-session adoption (passing the daemon-held pair session_id into the elevated process) — a new security seam we don't need; the elevated re-run re-meets instead. The elevation gate MOVES from command-entry to the enrollment boundary; discovery is read-only pre-trust.",
2026-07-26T22:33:03.0838659Z       "requiredStages": [
2026-07-26T22:33:03.0838793Z         "doc",
2026-07-26T22:33:03.0838939Z         "impl",
2026-07-26T22:33:03.0839141Z         "unit"
2026-07-26T22:33:03.0839264Z       ],
2026-07-26T22:33:03.0839403Z       "stages": {
2026-07-26T22:33:03.0839522Z         "doc": {
2026-07-26T22:33:03.0839662Z           "complete": true,
2026-07-26T22:33:03.0839794Z           "evidence": [
2026-07-26T22:33:03.0839918Z             {
2026-07-26T22:33:03.0840156Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-07-26T22:33:03.0840296Z               "line": 91
2026-07-26T22:33:03.0840418Z             }
2026-07-26T22:33:03.0840537Z           ]
2026-07-26T22:33:03.0840679Z         },
2026-07-26T22:33:03.0840806Z         "impl": {
2026-07-26T22:33:03.0840940Z           "complete": true,
2026-07-26T22:33:03.0841073Z           "evidence": [
2026-07-26T22:33:03.0841187Z             {
2026-07-26T22:33:03.0841350Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0841482Z               "line": 9395
2026-07-26T22:33:03.0841598Z             },
2026-07-26T22:33:03.0841712Z             {
2026-07-26T22:33:03.0841860Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0841989Z               "line": 9413
2026-07-26T22:33:03.0842117Z             }
2026-07-26T22:33:03.0842228Z           ]
2026-07-26T22:33:03.0842346Z         },
2026-07-26T22:33:03.0842455Z         "int": {
2026-07-26T22:33:03.0842595Z           "complete": false,
2026-07-26T22:33:03.0842719Z           "evidence": []
2026-07-26T22:33:03.0842891Z         },
2026-07-26T22:33:03.0843004Z         "unit": {
2026-07-26T22:33:03.0843143Z           "complete": true,
2026-07-26T22:33:03.0843346Z           "evidence": [
2026-07-26T22:33:03.0843466Z             {
2026-07-26T22:33:03.0843612Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0843744Z               "line": 18222
2026-07-26T22:33:03.0843865Z             }
2026-07-26T22:33:03.0843979Z           ]
2026-07-26T22:33:03.0844102Z         }
2026-07-26T22:33:03.0844222Z       }
2026-07-26T22:33:03.0844340Z     },
2026-07-26T22:33:03.0844456Z     {
2026-07-26T22:33:03.0844608Z       "id": "REQ-JOIN-DIAGNOSTICS",
2026-07-26T22:33:03.0849653Z       "title": "`spt subnet join` never fails SILENTLY (ADR-0030; the field incident showed no output at all). (a) LIVE progress during the meet (replace the one-shot \"Searching…\" cli.rs:6268 with periodic elapsed/deadline) so silence ≠ hang; (b) DETAILED failure on meet-exhaustion — rendezvous candidates + families attempted (IPv4/IPv6) + relay-vs-direct + the last concrete error — surfaced BEFORE any code prompt (a dead subnet must not make the user fetch a code); connect_seed_holder (pairhost.rs:437) and dial_via_rendezvous (meet.rs:281) currently swallow per-attempt errors — thread the last error up with attempt context; (c) PROPAGATE the terminal event — brain.rs:1024 `_ => continue` must deliver a daemon NoSeedHolder/PairFail to the CLI as a printed error (this is WHY the user saw nothing); (d) `--verbose`/`SPT_LOG` discovery TRACE (per-probe derived id, discovery path mDNS/n0-DNS/relay, per-family timeouts), opt-in — no such knob exists today. (next milestone)",
2026-07-26T22:33:03.0849940Z       "requiredStages": [
2026-07-26T22:33:03.0850063Z         "doc",
2026-07-26T22:33:03.0850197Z         "impl",
2026-07-26T22:33:03.0850316Z         "unit"
2026-07-26T22:33:03.0850440Z       ],
2026-07-26T22:33:03.0850565Z       "stages": {
2026-07-26T22:33:03.0850687Z         "doc": {
2026-07-26T22:33:03.0850822Z           "complete": true,
2026-07-26T22:33:03.0851092Z           "evidence": [
2026-07-26T22:33:03.0851216Z             {
2026-07-26T22:33:03.0851423Z               "path": "docs/adr/0030-robust-wan-subnet-join.md",
2026-07-26T22:33:03.0851553Z               "line": 3
2026-07-26T22:33:03.0851676Z             }
2026-07-26T22:33:03.0851795Z           ]
2026-07-26T22:33:03.0851972Z         },
2026-07-26T22:33:03.0852100Z         "impl": {
2026-07-26T22:33:03.0852230Z           "complete": true,
2026-07-26T22:33:03.0852358Z           "evidence": [
2026-07-26T22:33:03.0852478Z             {
2026-07-26T22:33:03.0852663Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.0852793Z               "line": 1404
2026-07-26T22:33:03.0852911Z             },
2026-07-26T22:33:03.0853030Z             {
2026-07-26T22:33:03.0853235Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.0853379Z               "line": 574
2026-07-26T22:33:03.0853507Z             },
2026-07-26T22:33:03.0853631Z             {
2026-07-26T22:33:03.0853827Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.0853945Z               "line": 452
2026-07-26T22:33:03.0854078Z             },
2026-07-26T22:33:03.0854200Z             {
2026-07-26T22:33:03.0854357Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0854482Z               "line": 9569
2026-07-26T22:33:03.0854595Z             }
2026-07-26T22:33:03.0854711Z           ]
2026-07-26T22:33:03.0854835Z         },
2026-07-26T22:33:03.0854958Z         "int": {
2026-07-26T22:33:03.0855102Z           "complete": false,
2026-07-26T22:33:03.0855225Z           "evidence": []
2026-07-26T22:33:03.0855350Z         },
2026-07-26T22:33:03.0855478Z         "unit": {
2026-07-26T22:33:03.0855607Z           "complete": true,
2026-07-26T22:33:03.0855731Z           "evidence": [
2026-07-26T22:33:03.0855850Z             {
2026-07-26T22:33:03.0856032Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.0856165Z               "line": 741
2026-07-26T22:33:03.0856290Z             },
2026-07-26T22:33:03.0856413Z             {
2026-07-26T22:33:03.0856568Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0856716Z               "line": 18103
2026-07-26T22:33:03.0856838Z             }
2026-07-26T22:33:03.0856957Z           ]
2026-07-26T22:33:03.0857077Z         }
2026-07-26T22:33:03.0857205Z       }
2026-07-26T22:33:03.0857325Z     },
2026-07-26T22:33:03.0857453Z     {
2026-07-26T22:33:03.0857607Z       "id": "REQ-JOIN-TWO-PHASE",
2026-07-26T22:33:03.0862795Z       "title": "`spt subnet join` is two-phase (meet-before-code) so the entered code is FRESH at the ceremony regardless of discovery time (ADR-0030). The meet selector is the PUBLIC `(subnet-name, TOTP-epoch)` (rendezvous_token = SHA256(domain ‖ name ‖ totp_step)); the secret TOTP-code is the SPAKE2 password ONLY, never a discovery input — so the code is collected AFTER a member is found. Extend the brain.pair_join event stream (brain.rs:1009): CLI PairMeetReq{subnet} → daemon meets (name, current-epoch) resolving the seed-holder's REAL stable pairing address → MetMember event → CLI prompts the code (cli.rs cmd_subnet_join :6236) → PairCodeSubmit{code} → daemon dials the held real-address on SPT_PAIR_ALPN + SPAKE2 → PairJoined/PairFail. Daemon holds the real-address between phases, bounded by a 5-MINUTE wait-for-code timeout; a wrong-code retry re-runs the CEREMONY ONLY against the held address (no re-search). The non-interactive `--code` path stays one-shot (no prompt; relies on REQ-NET-FAMILY-GATE fast discovery, fails loudly per REQ-JOIN-DIAGNOSTICS on staleness). Security unchanged — the meet is pre-trust/unauthenticated (SPT_PAIR_MEET_ALPN); auth stays in SPAKE2. (next milestone)",
2026-07-26T22:33:03.0863266Z       "requiredStages": [
2026-07-26T22:33:03.0863363Z         "doc",
2026-07-26T22:33:03.0863462Z         "impl",
2026-07-26T22:33:03.0863566Z         "unit",
2026-07-26T22:33:03.0863668Z         "int"
2026-07-26T22:33:03.0863772Z       ],
2026-07-26T22:33:03.0864039Z       "stages": {
2026-07-26T22:33:03.0864138Z         "doc": {
2026-07-26T22:33:03.0864245Z           "complete": true,
2026-07-26T22:33:03.0864364Z           "evidence": [
2026-07-26T22:33:03.0864462Z             {
2026-07-26T22:33:03.0864639Z               "path": "docs/adr/0030-robust-wan-subnet-join.md",
2026-07-26T22:33:03.0864732Z               "line": 3
2026-07-26T22:33:03.0864831Z             }
2026-07-26T22:33:03.0864922Z           ]
2026-07-26T22:33:03.0865023Z         },
2026-07-26T22:33:03.0865127Z         "impl": {
2026-07-26T22:33:03.0865242Z           "complete": true,
2026-07-26T22:33:03.0865338Z           "evidence": [
2026-07-26T22:33:03.0865442Z             {
2026-07-26T22:33:03.0865586Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.0865700Z               "line": 1404
2026-07-26T22:33:03.0865794Z             },
2026-07-26T22:33:03.0865886Z             {
2026-07-26T22:33:03.0866019Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.0866133Z               "line": 1428
2026-07-26T22:33:03.0866234Z             },
2026-07-26T22:33:03.0866334Z             {
2026-07-26T22:33:03.0866477Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0866582Z               "line": 5549
2026-07-26T22:33:03.0866677Z             },
2026-07-26T22:33:03.0866777Z             {
2026-07-26T22:33:03.0866911Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0867019Z               "line": 5601
2026-07-26T22:33:03.0867105Z             },
2026-07-26T22:33:03.0867191Z             {
2026-07-26T22:33:03.0867332Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.0867431Z               "line": 1450
2026-07-26T22:33:03.0867522Z             },
2026-07-26T22:33:03.0867614Z             {
2026-07-26T22:33:03.0867751Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.0867857Z               "line": 450
2026-07-26T22:33:03.0867952Z             },
2026-07-26T22:33:03.0868061Z             {
2026-07-26T22:33:03.0868205Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-07-26T22:33:03.0868319Z               "line": 273
2026-07-26T22:33:03.0868429Z             }
2026-07-26T22:33:03.0868519Z           ]
2026-07-26T22:33:03.0868615Z         },
2026-07-26T22:33:03.0868710Z         "int": {
2026-07-26T22:33:03.0868816Z           "complete": true,
2026-07-26T22:33:03.0868915Z           "evidence": [
2026-07-26T22:33:03.0869111Z             {
2026-07-26T22:33:03.0869258Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-07-26T22:33:03.0869363Z               "line": 82
2026-07-26T22:33:03.0869455Z             },
2026-07-26T22:33:03.0869548Z             {
2026-07-26T22:33:03.0869693Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-07-26T22:33:03.0869789Z               "line": 107
2026-07-26T22:33:03.0869873Z             }
2026-07-26T22:33:03.0869962Z           ]
2026-07-26T22:33:03.0870053Z         },
2026-07-26T22:33:03.0870150Z         "unit": {
2026-07-26T22:33:03.0870253Z           "complete": true,
2026-07-26T22:33:03.0870349Z           "evidence": [
2026-07-26T22:33:03.0870577Z             {
2026-07-26T22:33:03.0870712Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0870807Z               "line": 6359
2026-07-26T22:33:03.0870906Z             },
2026-07-26T22:33:03.0870988Z             {
2026-07-26T22:33:03.0871121Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.0871221Z               "line": 1440
2026-07-26T22:33:03.0871322Z             }
2026-07-26T22:33:03.0871422Z           ]
2026-07-26T22:33:03.0871512Z         }
2026-07-26T22:33:03.0871608Z       }
2026-07-26T22:33:03.0871709Z     },
2026-07-26T22:33:03.0871807Z     {
2026-07-26T22:33:03.0871937Z       "id": "REQ-JOIN-VERBOSE-CLOCK",
2026-07-26T22:33:03.0874365Z       "title": "W2/D4 (JOIN-TRUTH): the JOINER side is no longer blind to its own ceremony clock — `spt subnet join --verbose` prints the joiner's derived TOTP step, the applied offset seconds, and the NTP correction state (corrected / uncorrected) per meet sweep; the same triple folds into `meet_failure_detail` so the NO_SEED_HOLDER verbose block carries it. ROOT: diagnosing enlyzeam required shipping a compiled probe over ssh because the member logs PAIR_MEET_UP step=N but the joiner surfaces nothing about its OWN step/offset — the exact asymmetry that hid D1-D3. Extends REQ-JOIN-DIAGNOSTICS's --verbose without a new knob. CLI help changes → xtask docs gen, no internal REQ codes in clap /// (docs-token gate).",
2026-07-26T22:33:03.0874576Z       "requiredStages": [
2026-07-26T22:33:03.0874665Z         "impl",
2026-07-26T22:33:03.0874747Z         "unit"
2026-07-26T22:33:03.0874828Z       ],
2026-07-26T22:33:03.0874905Z       "stages": {
2026-07-26T22:33:03.0874989Z         "doc": {
2026-07-26T22:33:03.0875069Z           "complete": false,
2026-07-26T22:33:03.0875165Z           "evidence": []
2026-07-26T22:33:03.0875241Z         },
2026-07-26T22:33:03.0875335Z         "impl": {
2026-07-26T22:33:03.0875424Z           "complete": true,
2026-07-26T22:33:03.0875516Z           "evidence": [
2026-07-26T22:33:03.0875602Z             {
2026-07-26T22:33:03.0875729Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.0875822Z               "line": 541
2026-07-26T22:33:03.0879589Z             },
2026-07-26T22:33:03.0879695Z             {
2026-07-26T22:33:03.0879842Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.0879933Z               "line": 552
2026-07-26T22:33:03.0880020Z             },
2026-07-26T22:33:03.0880099Z             {
2026-07-26T22:33:03.0880238Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.0880325Z               "line": 574
2026-07-26T22:33:03.0880400Z             },
2026-07-26T22:33:03.0880480Z             {
2026-07-26T22:33:03.0880614Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:03.0880695Z               "line": 129
2026-07-26T22:33:03.0880790Z             }
2026-07-26T22:33:03.0880866Z           ]
2026-07-26T22:33:03.0880957Z         },
2026-07-26T22:33:03.0881033Z         "int": {
2026-07-26T22:33:03.0881132Z           "complete": false,
2026-07-26T22:33:03.0881529Z           "evidence": []
2026-07-26T22:33:03.0881625Z         },
2026-07-26T22:33:03.0881710Z         "unit": {
2026-07-26T22:33:03.0881805Z           "complete": true,
2026-07-26T22:33:03.0881892Z           "evidence": [
2026-07-26T22:33:03.0881991Z             {
2026-07-26T22:33:03.0882178Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.0882283Z               "line": 741
2026-07-26T22:33:03.0882367Z             },
2026-07-26T22:33:03.0882444Z             {
2026-07-26T22:33:03.0882560Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.0882640Z               "line": 775
2026-07-26T22:33:03.0882720Z             }
2026-07-26T22:33:03.0882800Z           ]
2026-07-26T22:33:03.0882882Z         }
2026-07-26T22:33:03.0882971Z       }
2026-07-26T22:33:03.0883047Z     },
2026-07-26T22:33:03.0883127Z     {
2026-07-26T22:33:03.0883224Z       "id": "REQ-KICK-1",
2026-07-26T22:33:03.0885875Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-07-26T22:33:03.0886086Z       "requiredStages": [
2026-07-26T22:33:03.0886172Z         "doc",
2026-07-26T22:33:03.0886247Z         "impl",
2026-07-26T22:33:03.0886348Z         "unit",
2026-07-26T22:33:03.0886424Z         "int"
2026-07-26T22:33:03.0886505Z       ],
2026-07-26T22:33:03.0886586Z       "stages": {
2026-07-26T22:33:03.0886672Z         "doc": {
2026-07-26T22:33:03.0886753Z           "complete": true,
2026-07-26T22:33:03.0886848Z           "evidence": [
2026-07-26T22:33:03.0886929Z             {
2026-07-26T22:33:03.0887031Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.0887115Z               "line": 397
2026-07-26T22:33:03.0887196Z             }
2026-07-26T22:33:03.0887277Z           ]
2026-07-26T22:33:03.0887355Z         },
2026-07-26T22:33:03.0887444Z         "impl": {
2026-07-26T22:33:03.0887530Z           "complete": true,
2026-07-26T22:33:03.0887617Z           "evidence": [
2026-07-26T22:33:03.0887702Z             {
2026-07-26T22:33:03.0887830Z               "path": "crates/spt-net/src/net/attach.rs",
2026-07-26T22:33:03.0887927Z               "line": 41
2026-07-26T22:33:03.0888004Z             },
2026-07-26T22:33:03.0888097Z             {
2026-07-26T22:33:03.0888201Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.0888297Z               "line": 1388
2026-07-26T22:33:03.0888372Z             }
2026-07-26T22:33:03.0888457Z           ]
2026-07-26T22:33:03.0888537Z         },
2026-07-26T22:33:03.0888629Z         "int": {
2026-07-26T22:33:03.0888710Z           "complete": true,
2026-07-26T22:33:03.0888809Z           "evidence": [
2026-07-26T22:33:03.0888886Z             {
2026-07-26T22:33:03.0889086Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:03.0889176Z               "line": 1070
2026-07-26T22:33:03.0889263Z             }
2026-07-26T22:33:03.0889330Z           ]
2026-07-26T22:33:03.0889420Z         },
2026-07-26T22:33:03.0889495Z         "unit": {
2026-07-26T22:33:03.0889588Z           "complete": true,
2026-07-26T22:33:03.0889682Z           "evidence": [
2026-07-26T22:33:03.0889758Z             {
2026-07-26T22:33:03.0889878Z               "path": "crates/spt-net/src/net/attach.rs",
2026-07-26T22:33:03.0889978Z               "line": 272
2026-07-26T22:33:03.0890059Z             }
2026-07-26T22:33:03.0890130Z           ]
2026-07-26T22:33:03.0890213Z         }
2026-07-26T22:33:03.0890297Z       }
2026-07-26T22:33:03.0890378Z     },
2026-07-26T22:33:03.0890459Z     {
2026-07-26T22:33:03.0890570Z       "id": "REQ-LIST-JSON-LIVENESS-PARITY",
2026-07-26T22:33:03.0896798Z       "title": "GATEWAY-LIVENESS (flynn field bug 2026-07-09, RCA reader-divergence root): `spt endpoint list` (human) and `endpoint list --json` MUST report an IDENTICAL status for a locally-hosted endpoint — especially a pid-alive, status-ABSENT gateway (no psyche_init). ROOT (todlando RCA STEP-1, doyle-verified): the --json builder (crates/spt/src/cli.rs cmd_endpoint_list) emits each subnet row's status straight from resource_projection (spt-net registry.rs:566, passes instance.status through verbatim :592 — the persisted WAN snapshot, a lagged gossip that can carry a stale/crash-time Suspended) and NEVER applies the self-owned reconcile the human/picker path applies (reconcile_self_owned, crates/spt/src/picker/data.rs:160 via gather_endpoints :112). So a pid-alive self-owned gateway reads Suspended on --json but ONLINE on human (roster::enumerate spt/src/roster.rs:38 -> is_perch_alive pid-fallback spt-store/liveness.rs:136); the adapter suspend-poll (parse_endpoint_status over endpoint list --json --show-all) reads the divergent --json status -> self-suspends a pid-alive gateway. Candidates REFUTED: resource_projection does NOT re-derive liveness (copies instance.status, only skips !routable :582); render is a faithful {:?}. advertised_status (registryhost.rs:822) DOES compute Active via pid-fallback (live advertise fine) — the bug is the READER showing the un-reconciled snapshot. FIX (doyle-ruled): apply the self-owned reconcile in the cli --json builder (SAME spt/picker consumer layer as gather_endpoints, NOT lifted into resource_projection which inverts the dep spt-net->perch), reading LOCAL perch truth (is_perch_alive/unbound -> Active/Offline, mirroring the picker's local_rows). Do NOT force status=online (DEFECT B latent — seed-#5 orphan-listener false-ONLINE risk). Gate: a pid-alive locally-hosted gateway (status-absent, no psyche_init) reads the SAME non-Suspended status on human AND --json. Field-verify flynn (mobile-gw). Kin REQ-PICKER-3 + REQ-PRESENCE-LIVENESS-TRUTH + seed-#5 orphan-listener false-ONLINE.",
2026-07-26T22:33:03.0897131Z       "requiredStages": [
2026-07-26T22:33:03.0897213Z         "impl",
2026-07-26T22:33:03.0897286Z         "int"
2026-07-26T22:33:03.0897371Z       ],
2026-07-26T22:33:03.0897456Z       "stages": {
2026-07-26T22:33:03.0897547Z         "doc": {
2026-07-26T22:33:03.0897642Z           "complete": false,
2026-07-26T22:33:03.0897737Z           "evidence": []
2026-07-26T22:33:03.0897823Z         },
2026-07-26T22:33:03.0897915Z         "impl": {
2026-07-26T22:33:03.0898004Z           "complete": true,
2026-07-26T22:33:03.0898090Z           "evidence": [
2026-07-26T22:33:03.0898172Z             {
2026-07-26T22:33:03.0898291Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0898381Z               "line": 3221
2026-07-26T22:33:03.0898453Z             }
2026-07-26T22:33:03.0898520Z           ]
2026-07-26T22:33:03.0898606Z         },
2026-07-26T22:33:03.0898686Z         "int": {
2026-07-26T22:33:03.0898775Z           "complete": true,
2026-07-26T22:33:03.0898857Z           "evidence": [
2026-07-26T22:33:03.0899026Z             {
2026-07-26T22:33:03.0899179Z               "path": "crates/spt/tests/list_json_liveness_parity_e2e.rs",
2026-07-26T22:33:03.0899275Z               "line": 122
2026-07-26T22:33:03.0899355Z             }
2026-07-26T22:33:03.0899446Z           ]
2026-07-26T22:33:03.0899518Z         },
2026-07-26T22:33:03.0899604Z         "unit": {
2026-07-26T22:33:03.0899694Z           "complete": false,
2026-07-26T22:33:03.0899794Z           "evidence": []
2026-07-26T22:33:03.0899875Z         }
2026-07-26T22:33:03.0899956Z       }
2026-07-26T22:33:03.0900027Z     },
2026-07-26T22:33:03.0900114Z     {
2026-07-26T22:33:03.0900237Z       "id": "REQ-LISTEN-PRESERVES-HOSTING-TOPOLOGY",
2026-07-26T22:33:03.0905321Z       "title": "`api listen` must not ASSERT hosting topology it does not know. (hertz v0.39.0 field RCA 2026-07-21, doyle re-grounded at source.) OBSERVED: the published adapter sequence `api bind` then identity-preserving `api listen --session-id` produces a self-contradictory live record — controlled=true AND controllable=false on a broker-hosted PTY endpoint — which controlled-precedence masks blue while attached and which a DETACH then unmasks as amber HARNESS ONLY. Detach is not the root; it only reveals the bad stamp. SOURCE: api/startup.rs passes controllable=Some(false) UNCONDITIONALLY on the relay/listen path (~191-195, reasoning 'the harness owns the process, so there is no broker PTY'), and establish_perch resolves controllable = controllable.or_else(|| prior…) (~379) — explicit wins, so that Some(false) OVERWRITES the Some(true) an earlier `api bind` EARNED. The carry-forward discipline that protects cwd/adapter/rest_state does not protect this field precisely BECAUSE the listen path is not silent about it. The defect is an ASSUMPTION about hosting authority made by a path that does not know the answer. FIX (preferred): represent LISTENER CUSTODY separately from PTY HOSTING AUTHORITY, so establishing a listener says nothing about who owns the session surface. Merely preserving controllable=true when a broker-hosted session with that session_id exists is weaker — it leaves listen guessing rather than removing the guess. Gate: impl — listen no longer asserts hosting topology for a session it does not host; unit — the stamp resolution table over (prior controllable, listen path, broker-hosted session present); int — bind -> listen -> control -> detach ends at alive=true, controlled=false, controllable=true, display ONLINE.",
2026-07-26T22:33:03.0905646Z       "requiredStages": [
2026-07-26T22:33:03.0905731Z         "impl",
2026-07-26T22:33:03.0905807Z         "unit",
2026-07-26T22:33:03.0905903Z         "int"
2026-07-26T22:33:03.0905984Z       ],
2026-07-26T22:33:03.0906065Z       "stages": {
2026-07-26T22:33:03.0906146Z         "doc": {
2026-07-26T22:33:03.0906238Z           "complete": false,
2026-07-26T22:33:03.0906317Z           "evidence": []
2026-07-26T22:33:03.0906403Z         },
2026-07-26T22:33:03.0906490Z         "impl": {
2026-07-26T22:33:03.0906586Z           "complete": true,
2026-07-26T22:33:03.0906674Z           "evidence": [
2026-07-26T22:33:03.0906755Z             {
2026-07-26T22:33:03.0906879Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.0906959Z               "line": 867
2026-07-26T22:33:03.0907039Z             },
2026-07-26T22:33:03.0907114Z             {
2026-07-26T22:33:03.0907235Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.0907330Z               "line": 493
2026-07-26T22:33:03.0907410Z             },
2026-07-26T22:33:03.0907502Z             {
2026-07-26T22:33:03.0907617Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0907715Z               "line": 197
2026-07-26T22:33:03.0907788Z             },
2026-07-26T22:33:03.0907878Z             {
2026-07-26T22:33:03.0907992Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0908083Z               "line": 468
2026-07-26T22:33:03.0908170Z             }
2026-07-26T22:33:03.0908259Z           ]
2026-07-26T22:33:03.0908340Z         },
2026-07-26T22:33:03.0908422Z         "int": {
2026-07-26T22:33:03.0908518Z           "complete": true,
2026-07-26T22:33:03.0908612Z           "evidence": [
2026-07-26T22:33:03.0908689Z             {
2026-07-26T22:33:03.0908799Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0908874Z               "line": 1024
2026-07-26T22:33:03.0909042Z             },
2026-07-26T22:33:03.0909124Z             {
2026-07-26T22:33:03.0909241Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0909330Z               "line": 1165
2026-07-26T22:33:03.0909412Z             }
2026-07-26T22:33:03.0909497Z           ]
2026-07-26T22:33:03.0909582Z         },
2026-07-26T22:33:03.0909657Z         "unit": {
2026-07-26T22:33:03.0909744Z           "complete": true,
2026-07-26T22:33:03.0909840Z           "evidence": [
2026-07-26T22:33:03.0909920Z             {
2026-07-26T22:33:03.0910044Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0910126Z               "line": 7634
2026-07-26T22:33:03.0910220Z             },
2026-07-26T22:33:03.0910292Z             {
2026-07-26T22:33:03.0910407Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.0910498Z               "line": 1323
2026-07-26T22:33:03.0910573Z             },
2026-07-26T22:33:03.0910660Z             {
2026-07-26T22:33:03.0910755Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0910845Z               "line": 968
2026-07-26T22:33:03.0910917Z             },
2026-07-26T22:33:03.0910998Z             {
2026-07-26T22:33:03.0911212Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0911289Z               "line": 1584
2026-07-26T22:33:03.0911431Z             },
2026-07-26T22:33:03.0911508Z             {
2026-07-26T22:33:03.0911609Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0911700Z               "line": 1638
2026-07-26T22:33:03.0911779Z             }
2026-07-26T22:33:03.0911856Z           ]
2026-07-26T22:33:03.0911943Z         }
2026-07-26T22:33:03.0912024Z       }
2026-07-26T22:33:03.0912108Z     },
2026-07-26T22:33:03.0912231Z     {
2026-07-26T22:33:03.0912361Z       "id": "REQ-LISTEN-SEED-CONSUME-AFTER-BIND",
2026-07-26T22:33:03.0915762Z       "title": "F-034 leg b (perri/hertz field finding 2026-07-09, hertz's HEADLINE): `api listen` must NOT consume the consume-once ephemeral seed on a PRE-BIND refusal — validate (adapter resolvable, home/subnet) and BIND first, THEN consume the seed. ROOT: today `api listen` burns the consume-once seed BEFORE it validates home/subnet, so on a multi-subnet node HOME_REFUSED (needs --subnet) fires AFTER the seed is already gone → the corrected retry (adding --subnet) on the SAME pid hits NO_SEED, a dead end (plausibly ADAPTER_UNRESOLVED burns it the same way). A refusal that never bound must leave the seed intact for the corrected retry. Same EFFECT-BEFORE-IRREVERSIBLE-CONSUME ordering class as F-032 (commune commit-before-delete) — the irreversible consume must follow the successful effect, never precede a refusal. Gate: a pre-bind refusal (HOME_REFUSED on a multi-subnet node without --subnet; ADAPTER_UNRESOLVED) leaves the seed CONSUMABLE — the corrected retry on the same pid binds (no NO_SEED); a SUCCESSFUL bind still consumes the seed exactly once (no double-bind). Files: the api-listen bind path (seed consume ordering). Kin F-032 [[spt-core-findings-backlog]].",
2026-07-26T22:33:03.0915972Z       "requiredStages": [
2026-07-26T22:33:03.0916052Z         "doc",
2026-07-26T22:33:03.0916134Z         "impl",
2026-07-26T22:33:03.0916220Z         "unit",
2026-07-26T22:33:03.0916310Z         "int"
2026-07-26T22:33:03.0916396Z       ],
2026-07-26T22:33:03.0916483Z       "stages": {
2026-07-26T22:33:03.0916563Z         "doc": {
2026-07-26T22:33:03.0916649Z           "complete": true,
2026-07-26T22:33:03.0916730Z           "evidence": [
2026-07-26T22:33:03.0916812Z             {
2026-07-26T22:33:03.0916939Z               "path": "docs-site/src/harness-contract/api.md",
2026-07-26T22:33:03.0917031Z               "line": 113
2026-07-26T22:33:03.0917112Z             }
2026-07-26T22:33:03.0917202Z           ]
2026-07-26T22:33:03.0917282Z         },
2026-07-26T22:33:03.0917372Z         "impl": {
2026-07-26T22:33:03.0917458Z           "complete": true,
2026-07-26T22:33:03.0917552Z           "evidence": [
2026-07-26T22:33:03.0917665Z             {
2026-07-26T22:33:03.0917848Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0917980Z               "line": 142
2026-07-26T22:33:03.0918067Z             },
2026-07-26T22:33:03.0918147Z             {
2026-07-26T22:33:03.0918251Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0918343Z               "line": 242
2026-07-26T22:33:03.0918425Z             }
2026-07-26T22:33:03.0918501Z           ]
2026-07-26T22:33:03.0918590Z         },
2026-07-26T22:33:03.0918667Z         "int": {
2026-07-26T22:33:03.0918754Z           "complete": true,
2026-07-26T22:33:03.0918839Z           "evidence": [
2026-07-26T22:33:03.0918919Z             {
2026-07-26T22:33:03.0919143Z               "path": "crates/spt/tests/listen_seed_retry_e2e.rs",
2026-07-26T22:33:03.0919224Z               "line": 66
2026-07-26T22:33:03.0919312Z             }
2026-07-26T22:33:03.0919388Z           ]
2026-07-26T22:33:03.0919467Z         },
2026-07-26T22:33:03.0919549Z         "unit": {
2026-07-26T22:33:03.0919641Z           "complete": true,
2026-07-26T22:33:03.0919736Z           "evidence": [
2026-07-26T22:33:03.0919820Z             {
2026-07-26T22:33:03.0919934Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0920146Z               "line": 1974
2026-07-26T22:33:03.0920231Z             },
2026-07-26T22:33:03.0920318Z             {
2026-07-26T22:33:03.0920419Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0920504Z               "line": 2031
2026-07-26T22:33:03.0920580Z             },
2026-07-26T22:33:03.0920657Z             {
2026-07-26T22:33:03.0920776Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0920852Z               "line": 2129
2026-07-26T22:33:03.0920934Z             },
2026-07-26T22:33:03.0921014Z             {
2026-07-26T22:33:03.0921128Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0921205Z               "line": 2165
2026-07-26T22:33:03.0921297Z             },
2026-07-26T22:33:03.0921377Z             {
2026-07-26T22:33:03.0921486Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0921663Z               "line": 2197
2026-07-26T22:33:03.0921749Z             }
2026-07-26T22:33:03.0921844Z           ]
2026-07-26T22:33:03.0921936Z         }
2026-07-26T22:33:03.0922015Z       }
2026-07-26T22:33:03.0922101Z     },
2026-07-26T22:33:03.0922188Z     {
2026-07-26T22:33:03.0922302Z       "id": "REQ-LISTEN-SESSION-ID-FALLBACK",
2026-07-26T22:33:03.0925959Z       "title": "F-034 leg c (perri/hertz field finding 2026-07-09): a session that goes live LATE (hours after SessionStart, or after a daemon restart) must still be able to bind — the ephemeral SessionStart seed ('consumed within seconds') is GONE by then and nothing re-fires it until the NEXT SessionStart, so even `api listen --parent-pid <correct claude pid>` hits NO_SEED. Design assumption 're-fired on the next SessionStart if needed' does not hold for long-lived sessions. FIX (perri-recommended, cleanest): `api listen --session-id <sid>` fallback that binds from the session-id when the pid has no live seed — removes the ephemeral-seed dependency entirely (the adapter already knows the sid; the skill passes it, and can then DROP its manual re-seed step). Alternative (option 1, less clean): re-fire the seed on daemon restart. Gate: a session with NO live seed (expired / post-daemon-restart) binds via `listen --session-id <sid>` (no NO_SEED); the sid-bind carries the same identity/auth the seed-bind would (session_id custody — kin REQ-PSYCHE-SID-CUSTODY / the sid-symmetric-auth pattern). Files: api-listen bind path (sid-fallback seam), clap --session-id flag (plain doc-comment). hertz/perri live-verify; if it lands the adapter skill drops the re-seed step.",
2026-07-26T22:33:03.0926074Z       "requiredStages": [
2026-07-26T22:33:03.0926155Z         "doc",
2026-07-26T22:33:03.0926250Z         "impl",
2026-07-26T22:33:03.0926331Z         "unit",
2026-07-26T22:33:03.0926408Z         "int"
2026-07-26T22:33:03.0926489Z       ],
2026-07-26T22:33:03.0926570Z       "stages": {
2026-07-26T22:33:03.0926655Z         "doc": {
2026-07-26T22:33:03.0926747Z           "complete": true,
2026-07-26T22:33:03.0926827Z           "evidence": [
2026-07-26T22:33:03.0926908Z             {
2026-07-26T22:33:03.0927024Z               "path": "docs-site/src/harness-contract/api.md",
2026-07-26T22:33:03.0927118Z               "line": 96
2026-07-26T22:33:03.0927200Z             }
2026-07-26T22:33:03.0927281Z           ]
2026-07-26T22:33:03.0927362Z         },
2026-07-26T22:33:03.0927452Z         "impl": {
2026-07-26T22:33:03.0927533Z           "complete": true,
2026-07-26T22:33:03.0927634Z           "evidence": [
2026-07-26T22:33:03.0927715Z             {
2026-07-26T22:33:03.0927827Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0927918Z               "line": 308
2026-07-26T22:33:03.0927994Z             },
2026-07-26T22:33:03.0928074Z             {
2026-07-26T22:33:03.0928182Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0928269Z               "line": 698
2026-07-26T22:33:03.0928365Z             }
2026-07-26T22:33:03.0928445Z           ]
2026-07-26T22:33:03.0928530Z         },
2026-07-26T22:33:03.0928612Z         "int": {
2026-07-26T22:33:03.0928779Z           "complete": true,
2026-07-26T22:33:03.0928869Z           "evidence": [
2026-07-26T22:33:03.0929018Z             {
2026-07-26T22:33:03.0929145Z               "path": "crates/spt/tests/listen_seed_retry_e2e.rs",
2026-07-26T22:33:03.0929242Z               "line": 166
2026-07-26T22:33:03.0929319Z             }
2026-07-26T22:33:03.0929399Z           ]
2026-07-26T22:33:03.0929475Z         },
2026-07-26T22:33:03.0929562Z         "unit": {
2026-07-26T22:33:03.0929662Z           "complete": true,
2026-07-26T22:33:03.0929747Z           "evidence": [
2026-07-26T22:33:03.0929823Z             {
2026-07-26T22:33:03.0929929Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0930027Z               "line": 2056
2026-07-26T22:33:03.0930109Z             },
2026-07-26T22:33:03.0930182Z             {
2026-07-26T22:33:03.0930399Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0930494Z               "line": 2079
2026-07-26T22:33:03.0930575Z             },
2026-07-26T22:33:03.0930664Z             {
2026-07-26T22:33:03.0930778Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.0930869Z               "line": 2099
2026-07-26T22:33:03.0930946Z             },
2026-07-26T22:33:03.0931031Z             {
2026-07-26T22:33:03.0931131Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0931227Z               "line": 13383
2026-07-26T22:33:03.0931308Z             }
2026-07-26T22:33:03.0931388Z           ]
2026-07-26T22:33:03.0931470Z         }
2026-07-26T22:33:03.0931551Z       }
2026-07-26T22:33:03.0931623Z     },
2026-07-26T22:33:03.0931703Z     {
2026-07-26T22:33:03.0931823Z       "id": "REQ-LIVE-AGENT-NO-INJECT-DELIVERY",
2026-07-26T22:33:03.0939720Z       "title": "F-033 RE-SCOPED (doyle re-ruling 2026-07-10 after the #82 gate falsified the original premise — the hosting-mode class split is BINDING context): 'state:live_agent has a self-delivery reader' CONFLATED two hosting modes. (A) HARNESS-hosted live agents (api listen path) DO deliver via adapter channels only — and are ALREADY structurally excluded from inject: bind_from_seed stamps controllable=Some(false), no broker PTY exists. (B) SPT-HOSTED/CONTROLLED live agents' inject leg IS their delivery reader (broker PTY + translation binary — doyle's own endpoint is field proof: ENDPOINT_INJECT + IDLE_PARKED_DRAIN alongside hook-poll); the original blanket state:live_agent exclusion broke REQ-MSG-IDLE-EDGE-DRAIN + the v0.14.3 LAW on both CI platforms and was REVERTED (predicate stays controllable-gated). perri's adapter-channels-only model (F-dupmsg-adapter-confirm.md) holds for class (A) only — do not re-seed the conflation. The F-033 DUPLICATE mechanism (hook-poll + idle-inject both delivering one row, operator spool row 156) is closed structurally by REQ-CARRIER-CLAIM-EXCLUSIVE's atomic cross-carrier take. REMAINING LEGS OF THIS REQ: (a) unit — a harness-hosted live agent (controllable Some(false)/None, no broker PTY) can never route through try_spt_hosted_inject (evidence may TAG the existing is_spt_hosted_no_relay non-controllable case rather than duplicate it); (b) VERIFICATION (report-before-fix, DELIVERED to doyle 2026-07-10): the no-translation-binary raw payload+CR path is PROVABLY DEAD (broker dispatch_endpoint_input: no-binary -> loud spool, never a PTY write — v0.14.3 holds); the operator's typed-unsubmitted garbage is PINNED to the Layer-2 echo-verify RE-DRIVE (broker.rs inject worker) force-enabled host-wide by ambient SPT_INJECT_VERIFY_ECHO in the daemon's inherited dev-shell env (default-OFF declared capability turned on globally — the F-036 env-inheritance class): a false verify-miss RETYPES the whole sequence into the input field. Fix LANDED on the W4 branch (doyle-accepted echo-scrub 2026-07-10): SPT_INJECT_VERIFY_ECHO/SPT_INJECT_FORCE_ECHO_MISS folded into the W1 daemon-startup env scrub (spt_runtime::INJECT_ECHO_ENV_VARS; startup-only, role-spawn builder untouched so explicit per-spawn declaration stays the production on-switch) — evidence rides REQ-HAZARD-DAEMON-IDENTITY-ENV-SANITIZE (the F-036 class REQ). Residual-class RULED (doyle 2026-07-10): this REQ covers the harness-hosted-never-inject predicate leg (unit) + the echo-scrub itself (impl, dual-tagged) — stages [impl,unit].",
2026-07-26T22:33:03.0939992Z       "requiredStages": [
2026-07-26T22:33:03.0940083Z         "impl",
2026-07-26T22:33:03.0940160Z         "unit"
2026-07-26T22:33:03.0940254Z       ],
2026-07-26T22:33:03.0940335Z       "stages": {
2026-07-26T22:33:03.0940417Z         "doc": {
2026-07-26T22:33:03.0940513Z           "complete": false,
2026-07-26T22:33:03.0940597Z           "evidence": []
2026-07-26T22:33:03.0940674Z         },
2026-07-26T22:33:03.0940761Z         "impl": {
2026-07-26T22:33:03.0940847Z           "complete": true,
2026-07-26T22:33:03.0940940Z           "evidence": [
2026-07-26T22:33:03.0941111Z             {
2026-07-26T22:33:03.0941257Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.0941614Z               "line": 59
2026-07-26T22:33:03.0941710Z             }
2026-07-26T22:33:03.0941801Z           ]
2026-07-26T22:33:03.0941910Z         },
2026-07-26T22:33:03.0941996Z         "int": {
2026-07-26T22:33:03.0942083Z           "complete": false,
2026-07-26T22:33:03.0942158Z           "evidence": []
2026-07-26T22:33:03.0942244Z         },
2026-07-26T22:33:03.0942335Z         "unit": {
2026-07-26T22:33:03.0942426Z           "complete": true,
2026-07-26T22:33:03.0942511Z           "evidence": [
2026-07-26T22:33:03.0942602Z             {
2026-07-26T22:33:03.0942737Z               "path": "crates/spt-daemon/src/inject.rs",
2026-07-26T22:33:03.0942826Z               "line": 221
2026-07-26T22:33:03.0942907Z             }
2026-07-26T22:33:03.0942994Z           ]
2026-07-26T22:33:03.0943070Z         }
2026-07-26T22:33:03.0943154Z       }
2026-07-26T22:33:03.0943231Z     },
2026-07-26T22:33:03.0943318Z     {
2026-07-26T22:33:03.0943441Z       "id": "REQ-LIVEHOST-RECONCILE-TRIAL-SILENT",
2026-07-26T22:33:03.0948224Z       "title": "SEED (DEFERRED investigation, doyle 2026-07-09 — UPDATE-WEDGE follow-up): determine WHY the trial/rollback brain's livehost reconcile loop did NOT drive the broker controller-reap (nor re-host the live agents) during the ~30s field update-trial window, when livehost polls `query_live_session_endpoints()` → `brain.sessions()` (KIND_SESSIONS) UNCONDITIONALLY every `LIVE_RECONCILE_INTERVAL_MS`=5000ms (livehost.rs:1026). CONTEXT (surfaced building the counter-54 rig): livehost's 5s KIND_SESSIONS poll drives the SAME broker `reap_dead_controller` sweep the fix drives — so it would otherwise reap the 15s-matured wedge by ~T20 < the 30s trial and SELF-HEAL. It didn't (field froze 30s → rollback), so the field trial-brain livehost was silent/delayed (PIN Q2: no `DAEMON_RESTART_RESUME` under gen-1/gen-2; the 30s kill landed before/around livehost's first reconcile tick). The counter-54 fix (REQ-UPDATE-TRIAL-DRAIN-DRIVE) puts a RELIABLE 500ms reap-driver in run_brain's CORE heartbeat loop, making the wedge-reap INDEPENDENT of livehost — so this does NOT block counter-54. But the livehost silence is a latent anomaly with a SECOND consequence: live-agent HARNESS re-hosting was also delayed ~30s (a separate freeze contributor). Investigate: does `spawn_live_host`'s reconcile thread start promptly on a trial-brain boot, or is its first tick delayed past the trial window? Does its brain conn / `query_live_session_endpoints` block against the swap/wedge state? Register concrete REQ(s) once the mechanism is pinned. RELATED: [[REQ-BRAIN-UPDATE-RESTART-CLEAN-CLOSE]] (if the outgoing brain's black-holed conns perturb the new brain's livehost conn setup).",
2026-07-26T22:33:03.0948358Z       "requiredStages": [],
2026-07-26T22:33:03.0948449Z       "stages": {
2026-07-26T22:33:03.0948525Z         "doc": {
2026-07-26T22:33:03.0948624Z           "complete": false,
2026-07-26T22:33:03.0948716Z           "evidence": []
2026-07-26T22:33:03.0948802Z         },
2026-07-26T22:33:03.0948887Z         "impl": {
2026-07-26T22:33:03.0949048Z           "complete": false,
2026-07-26T22:33:03.0949293Z           "evidence": []
2026-07-26T22:33:03.0949370Z         },
2026-07-26T22:33:03.0949456Z         "int": {
2026-07-26T22:33:03.0949547Z           "complete": false,
2026-07-26T22:33:03.0949627Z           "evidence": []
2026-07-26T22:33:03.0949713Z         },
2026-07-26T22:33:03.0949790Z         "unit": {
2026-07-26T22:33:03.0949885Z           "complete": false,
2026-07-26T22:33:03.0949970Z           "evidence": []
2026-07-26T22:33:03.0950053Z         }
2026-07-26T22:33:03.0950124Z       }
2026-07-26T22:33:03.0950205Z     },
2026-07-26T22:33:03.0950284Z     {
2026-07-26T22:33:03.0950386Z       "id": "REQ-LIVENESS-ORACLE-SOUND",
2026-07-26T22:33:03.0963082Z       "title": "TEARDOWN-AUTHORITY W2 (todlando W1 gate-round-0 finding, doyle-scoped from the LANDED W1 code 2026-07-19): 'does this pid still exist' has ONE answer in spt-core and it is derived from the OS process table. TODAY spt-daemon/src/broker.rs session_is_zombie computes wrapper_alive from spt_store::proc::is_process_alive, which probes OpenProcess on Windows — and OpenProcess keeps SUCCEEDING for a TERMINATED process while any parent holds an open handle, which the broker ALWAYS does (Arc<PtySession>) for every PTY child it spawned. A correctly-reaped harness therefore reads ALIVE, flipping zombie_verdict off its PRIMARY class (Some(false) = dead root + surviving record = always a zombie) onto the conditional arm, which additionally demands adapter_labeled && past_grace && !has_live_descendants. CONSEQUENCE, live today: a dead-root session that is NOT adapter-labeled is claimed LIVE indefinitely — `endpoint run`'s dup-guard refuses ENDPOINT_ALREADY_LIVE over an already-dead tree and cmd_rest's Suspend alive_hint forces from=alive on the same false claim (both via has_live_session_honest, cli.rs:2014 and :3805). REQ-ENDPOINT-CYCLE-HONEST exists to give the cycle verbs ONE liveness authority; after W1 there are TWO and they disagree by construction (teardown.rs::root_provably_gone asks the table and is right; session_is_zombie asks is_process_alive and is wrong). THE DISCRIMINATOR (binding, and it makes the audit checkable rather than 20 judgement calls): is_process_alive is unsound EXACTLY when the ASKER — or a live ancestor — still holds an open HANDLE to the target; dropping a Child closes it, so a spawner that DROPS is honest and one that RETAINS is not. Hence the dangerous shape is asking 'is it GONE' about a process you OWN, and the SAME CALL IS SOUND IN THE CLI AND UNSOUND IN THE DAEMON FOR THE SAME PID — soundness is a property of the asker, not the call. REJECTED ALTERNATIVE, recorded in ADR-0045 Amendment 1 so it is not re-proposed: proc::reap_if_child before the probe fails twice — it is a NO-OP on Windows (#[cfg(windows)] let _ = pid), and decisively the broker holds the handle BY CONSTRUCTION for every pid this predicate is ever asked about, so no handle-based probe can EVER be sound at this site. FIX: (a) add a sound probe as a NAMED SIBLING whose name is the question — process_exists(pid) over process_table() — and state on is_process_alive's own doc which question it answers and which it does not, pointing at the sibling (the behavior was documented VERBATIM in legacy_resident_sweep_e2e.rs since 2026 and never reached proc.rs or zombie_verdict: written where DISCOVERED, not where CONSUMED); (b) route session_is_zombie's wrapper_alive through it, leaving zombie_verdict PURE and UNCHANGED (it was fed a lie, it is not wrong); (c) an EMPTY table is NO KNOWLEDGE — it must resolve to None (zombie_verdict(None) already means 'never guess') and must NEVER manufacture Some(false), which would mass-classify every live session a zombie = the W1 blocker inverted at broker scope; (d) AUDIT, do not mass-migrate, the remaining callers using the discriminator — roster.rs/api/startup.rs/api/auth.rs are already adjudicated SOUND (the asker never spawned the target); cli.rs purge psyche-quiesce is RIGHT ANSWER FOR A FRAGILE REASON (sound only because the CLI asks and the DAEMON spawned the psyche — it goes unsound SILENTLY if that check ever moves into the daemon) and gets a comment naming the asker as what makes it safe; the daemon-side population (livehost.rs, shellhost.rs, shellwake.rs, lifecycle.rs, in-daemon is_perch_alive) is adjudicated one verdict per site (sound/unsound/unreachable), fixing only unsound AND reachable and REPORTING the verdicts even where left — if unsound-and-reachable exceeds a handful, STOP and escalate to doyle rather than widening this wave. Gate: doc — KNOWN-HAZARDS 7.50 + ADR-0045 Amendment 1; impl — process_exists + the caveat on is_process_alive + wrapper_alive routed + the adjudicated fixes; unit — the empty-table arm resolves to None (never Some(false)), a handle-held corpse classifies as a zombie, and zombie_verdict's existing pure table is extended with the previously-unreachable case (dead root + not adapter-labeled + within grace); int — manufacture the REAL handle-held-corpse condition (broker retains a handle to a killed PTY child) and assert the session classifies zombie + the run dup-guard does NOT refuse over it; Windows-only if it cannot be made on Linux, and the test NAME says so.",
2026-07-26T22:33:03.0963503Z       "requiredStages": [
2026-07-26T22:33:03.0963589Z         "doc",
2026-07-26T22:33:03.0963665Z         "impl",
2026-07-26T22:33:03.0963746Z         "unit",
2026-07-26T22:33:03.0963828Z         "int"
2026-07-26T22:33:03.0963913Z       ],
2026-07-26T22:33:03.0963994Z       "stages": {
2026-07-26T22:33:03.0964075Z         "doc": {
2026-07-26T22:33:03.0964171Z           "complete": true,
2026-07-26T22:33:03.0964251Z           "evidence": [
2026-07-26T22:33:03.0964332Z             {
2026-07-26T22:33:03.0964439Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.0964533Z               "line": 743
2026-07-26T22:33:03.0964613Z             }
2026-07-26T22:33:03.0964690Z           ]
2026-07-26T22:33:03.0964777Z         },
2026-07-26T22:33:03.0964862Z         "impl": {
2026-07-26T22:33:03.0964951Z           "complete": true,
2026-07-26T22:33:03.0965075Z           "evidence": [
2026-07-26T22:33:03.0965166Z             {
2026-07-26T22:33:03.0965284Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0965370Z               "line": 326
2026-07-26T22:33:03.0965453Z             },
2026-07-26T22:33:03.0965539Z             {
2026-07-26T22:33:03.0965637Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0965724Z               "line": 4732
2026-07-26T22:33:03.0965805Z             },
2026-07-26T22:33:03.0965886Z             {
2026-07-26T22:33:03.0965995Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.0966077Z               "line": 486
2026-07-26T22:33:03.0966158Z             }
2026-07-26T22:33:03.0966248Z           ]
2026-07-26T22:33:03.0966324Z         },
2026-07-26T22:33:03.0966416Z         "int": {
2026-07-26T22:33:03.0966505Z           "complete": true,
2026-07-26T22:33:03.0966591Z           "evidence": [
2026-07-26T22:33:03.0966674Z             {
2026-07-26T22:33:03.0966806Z               "path": "crates/spt-daemon/tests/spawn_truth.rs",
2026-07-26T22:33:03.0966892Z               "line": 392
2026-07-26T22:33:03.0966978Z             }
2026-07-26T22:33:03.0967060Z           ]
2026-07-26T22:33:03.0967144Z         },
2026-07-26T22:33:03.0967225Z         "unit": {
2026-07-26T22:33:03.0967320Z           "complete": true,
2026-07-26T22:33:03.0967410Z           "evidence": [
2026-07-26T22:33:03.0967499Z             {
2026-07-26T22:33:03.0967613Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0967709Z               "line": 6171
2026-07-26T22:33:03.0967795Z             },
2026-07-26T22:33:03.0967885Z             {
2026-07-26T22:33:03.0967995Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.0968091Z               "line": 6194
2026-07-26T22:33:03.0968171Z             },
2026-07-26T22:33:03.0968267Z             {
2026-07-26T22:33:03.0968367Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.0968457Z               "line": 974
2026-07-26T22:33:03.0968620Z             },
2026-07-26T22:33:03.0968705Z             {
2026-07-26T22:33:03.0968805Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.0968896Z               "line": 1014
2026-07-26T22:33:03.0969044Z             }
2026-07-26T22:33:03.0969129Z           ]
2026-07-26T22:33:03.0969211Z         }
2026-07-26T22:33:03.0969302Z       }
2026-07-26T22:33:03.0969387Z     },
2026-07-26T22:33:03.0969468Z     {
2026-07-26T22:33:03.0969565Z       "id": "REQ-MANIFEST-1",
2026-07-26T22:33:03.0969749Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-07-26T22:33:03.0969841Z       "requiredStages": [
2026-07-26T22:33:03.0969923Z         "doc",
2026-07-26T22:33:03.0970007Z         "impl",
2026-07-26T22:33:03.0970087Z         "unit"
2026-07-26T22:33:03.0970168Z       ],
2026-07-26T22:33:03.0970366Z       "stages": {
2026-07-26T22:33:03.0970456Z         "doc": {
2026-07-26T22:33:03.0970548Z           "complete": true,
2026-07-26T22:33:03.0970643Z           "evidence": [
2026-07-26T22:33:03.0970723Z             {
2026-07-26T22:33:03.0970824Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.0970910Z               "line": 19
2026-07-26T22:33:03.0971000Z             }
2026-07-26T22:33:03.0971081Z           ]
2026-07-26T22:33:03.0971168Z         },
2026-07-26T22:33:03.0971253Z         "impl": {
2026-07-26T22:33:03.0971348Z           "complete": true,
2026-07-26T22:33:03.0971434Z           "evidence": [
2026-07-26T22:33:03.0971516Z             {
2026-07-26T22:33:03.0971634Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.0971729Z               "line": 18
2026-07-26T22:33:03.0971812Z             }
2026-07-26T22:33:03.0971892Z           ]
2026-07-26T22:33:03.0971973Z         },
2026-07-26T22:33:03.0972054Z         "int": {
2026-07-26T22:33:03.0972146Z           "complete": false,
2026-07-26T22:33:03.0972254Z           "evidence": []
2026-07-26T22:33:03.0972336Z         },
2026-07-26T22:33:03.0972422Z         "unit": {
2026-07-26T22:33:03.0972522Z           "complete": true,
2026-07-26T22:33:03.0972616Z           "evidence": [
2026-07-26T22:33:03.0972691Z             {
2026-07-26T22:33:03.0972816Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.0972905Z               "line": 1335
2026-07-26T22:33:03.0972994Z             },
2026-07-26T22:33:03.0973071Z             {
2026-07-26T22:33:03.0973196Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.0973295Z               "line": 1717
2026-07-26T22:33:03.0973376Z             },
2026-07-26T22:33:03.0973458Z             {
2026-07-26T22:33:03.0973581Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.0973667Z               "line": 1729
2026-07-26T22:33:03.0973753Z             },
2026-07-26T22:33:03.0973835Z             {
2026-07-26T22:33:03.0973967Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.0974050Z               "line": 1740
2026-07-26T22:33:03.0974144Z             },
2026-07-26T22:33:03.0974216Z             {
2026-07-26T22:33:03.0974339Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.0974421Z               "line": 1757
2026-07-26T22:33:03.0974506Z             },
2026-07-26T22:33:03.0974583Z             {
2026-07-26T22:33:03.0974703Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.0974783Z               "line": 1771
2026-07-26T22:33:03.0974864Z             },
2026-07-26T22:33:03.0974945Z             {
2026-07-26T22:33:03.0975051Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.0975140Z               "line": 1887
2026-07-26T22:33:03.0975222Z             },
2026-07-26T22:33:03.0975313Z             {
2026-07-26T22:33:03.0975432Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.0975530Z               "line": 1902
2026-07-26T22:33:03.0975606Z             },
2026-07-26T22:33:03.0975688Z             {
2026-07-26T22:33:03.0975803Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.0975998Z               "line": 2053
2026-07-26T22:33:03.0976084Z             },
2026-07-26T22:33:03.0976164Z             {
2026-07-26T22:33:03.0976285Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.0976366Z               "line": 2064
2026-07-26T22:33:03.0976437Z             }
2026-07-26T22:33:03.0976526Z           ]
2026-07-26T22:33:03.0976599Z         }
2026-07-26T22:33:03.0976680Z       }
2026-07-26T22:33:03.0976761Z     },
2026-07-26T22:33:03.0976841Z     {
2026-07-26T22:33:03.0976933Z       "id": "REQ-MANIFEST-2",
2026-07-26T22:33:03.0977438Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-07-26T22:33:03.0977606Z       "requiredStages": [
2026-07-26T22:33:03.0977700Z         "doc",
2026-07-26T22:33:03.0977780Z         "impl",
2026-07-26T22:33:03.0977871Z         "unit"
2026-07-26T22:33:03.0977966Z       ],
2026-07-26T22:33:03.0978054Z       "stages": {
2026-07-26T22:33:03.0978140Z         "doc": {
2026-07-26T22:33:03.0978240Z           "complete": true,
2026-07-26T22:33:03.0978332Z           "evidence": [
2026-07-26T22:33:03.0978416Z             {
2026-07-26T22:33:03.0978507Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.0978603Z               "line": 75
2026-07-26T22:33:03.0978689Z             }
2026-07-26T22:33:03.0978769Z           ]
2026-07-26T22:33:03.0978846Z         },
2026-07-26T22:33:03.0979017Z         "impl": {
2026-07-26T22:33:03.0979108Z           "complete": true,
2026-07-26T22:33:03.0979195Z           "evidence": [
2026-07-26T22:33:03.0979270Z             {
2026-07-26T22:33:03.0979384Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.0979476Z               "line": 82
2026-07-26T22:33:03.0979557Z             },
2026-07-26T22:33:03.0979643Z             {
2026-07-26T22:33:03.0979761Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.0979858Z               "line": 15
2026-07-26T22:33:03.0979942Z             },
2026-07-26T22:33:03.0980028Z             {
2026-07-26T22:33:03.0980139Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.0980229Z               "line": 82
2026-07-26T22:33:03.0980310Z             },
2026-07-26T22:33:03.0980386Z             {
2026-07-26T22:33:03.0980502Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.0980590Z               "line": 100
2026-07-26T22:33:03.0980671Z             },
2026-07-26T22:33:03.0980747Z             {
2026-07-26T22:33:03.0980870Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.0980950Z               "line": 200
2026-07-26T22:33:03.0981035Z             },
2026-07-26T22:33:03.0981117Z             {
2026-07-26T22:33:03.0981293Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0981447Z               "line": 588
2026-07-26T22:33:03.0981551Z             },
2026-07-26T22:33:03.0981641Z             {
2026-07-26T22:33:03.0981757Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0981847Z               "line": 614
2026-07-26T22:33:03.0981927Z             },
2026-07-26T22:33:03.0982004Z             {
2026-07-26T22:33:03.0982156Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0982247Z               "line": 768
2026-07-26T22:33:03.0982333Z             },
2026-07-26T22:33:03.0982410Z             {
2026-07-26T22:33:03.0982523Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0982609Z               "line": 793
2026-07-26T22:33:03.0982687Z             },
2026-07-26T22:33:03.0982772Z             {
2026-07-26T22:33:03.0982886Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0982982Z               "line": 816
2026-07-26T22:33:03.0983063Z             },
2026-07-26T22:33:03.0983148Z             {
2026-07-26T22:33:03.0983266Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0983469Z               "line": 831
2026-07-26T22:33:03.0983554Z             },
2026-07-26T22:33:03.0983631Z             {
2026-07-26T22:33:03.0983742Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0983827Z               "line": 10503
2026-07-26T22:33:03.0983907Z             },
2026-07-26T22:33:03.0983990Z             {
2026-07-26T22:33:03.0984094Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0984179Z               "line": 10517
2026-07-26T22:33:03.0984265Z             },
2026-07-26T22:33:03.0984337Z             {
2026-07-26T22:33:03.0984447Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0984536Z               "line": 10551
2026-07-26T22:33:03.0984615Z             }
2026-07-26T22:33:03.0984695Z           ]
2026-07-26T22:33:03.0984876Z         },
2026-07-26T22:33:03.0984958Z         "int": {
2026-07-26T22:33:03.0985057Z           "complete": false,
2026-07-26T22:33:03.0985148Z           "evidence": []
2026-07-26T22:33:03.0985239Z         },
2026-07-26T22:33:03.0985310Z         "unit": {
2026-07-26T22:33:03.0985409Z           "complete": true,
2026-07-26T22:33:03.0985495Z           "evidence": [
2026-07-26T22:33:03.0985578Z             {
2026-07-26T22:33:03.0985686Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.0985782Z               "line": 1095
2026-07-26T22:33:03.0985859Z             },
2026-07-26T22:33:03.0985940Z             {
2026-07-26T22:33:03.0986062Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.0986152Z               "line": 228
2026-07-26T22:33:03.0986229Z             },
2026-07-26T22:33:03.0986316Z             {
2026-07-26T22:33:03.0986433Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.0986530Z               "line": 289
2026-07-26T22:33:03.0986611Z             },
2026-07-26T22:33:03.0986696Z             {
2026-07-26T22:33:03.0986815Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.0986907Z               "line": 330
2026-07-26T22:33:03.0986988Z             },
2026-07-26T22:33:03.0987072Z             {
2026-07-26T22:33:03.0987188Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.0987283Z               "line": 342
2026-07-26T22:33:03.0987359Z             },
2026-07-26T22:33:03.0987440Z             {
2026-07-26T22:33:03.0987546Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.0987640Z               "line": 353
2026-07-26T22:33:03.0987721Z             },
2026-07-26T22:33:03.0987809Z             {
2026-07-26T22:33:03.0987927Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.0988003Z               "line": 362
2026-07-26T22:33:03.0988089Z             },
2026-07-26T22:33:03.0988171Z             {
2026-07-26T22:33:03.0988307Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.0988392Z               "line": 378
2026-07-26T22:33:03.0988483Z             },
2026-07-26T22:33:03.0988573Z             {
2026-07-26T22:33:03.0988681Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.0988772Z               "line": 461
2026-07-26T22:33:03.0988858Z             },
2026-07-26T22:33:03.0989077Z             {
2026-07-26T22:33:03.0989196Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0989281Z               "line": 1167
2026-07-26T22:33:03.0989377Z             },
2026-07-26T22:33:03.0989455Z             {
2026-07-26T22:33:03.0989573Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0989653Z               "line": 1191
2026-07-26T22:33:03.0989745Z             },
2026-07-26T22:33:03.0989816Z             {
2026-07-26T22:33:03.0989935Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0990021Z               "line": 1217
2026-07-26T22:33:03.0990103Z             },
2026-07-26T22:33:03.0990183Z             {
2026-07-26T22:33:03.0990302Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0993835Z               "line": 1236
2026-07-26T22:33:03.0993936Z             },
2026-07-26T22:33:03.0994020Z             {
2026-07-26T22:33:03.0994167Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.0994312Z               "line": 1267
2026-07-26T22:33:03.0994396Z             },
2026-07-26T22:33:03.0994487Z             {
2026-07-26T22:33:03.0994630Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:03.0994720Z               "line": 458
2026-07-26T22:33:03.0994796Z             },
2026-07-26T22:33:03.0994884Z             {
2026-07-26T22:33:03.0995002Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:03.0995111Z               "line": 736
2026-07-26T22:33:03.0995198Z             },
2026-07-26T22:33:03.0995283Z             {
2026-07-26T22:33:03.0995509Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0995593Z               "line": 16310
2026-07-26T22:33:03.0995684Z             },
2026-07-26T22:33:03.0995770Z             {
2026-07-26T22:33:03.0995870Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.0995960Z               "line": 17376
2026-07-26T22:33:03.0996037Z             }
2026-07-26T22:33:03.0996119Z           ]
2026-07-26T22:33:03.0996199Z         }
2026-07-26T22:33:03.0996289Z       }
2026-07-26T22:33:03.0996361Z     },
2026-07-26T22:33:03.0996443Z     {
2026-07-26T22:33:03.0996542Z       "id": "REQ-MANIFEST-3",
2026-07-26T22:33:03.0997199Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-07-26T22:33:03.0997341Z       "requiredStages": [
2026-07-26T22:33:03.0997429Z         "doc",
2026-07-26T22:33:03.0997524Z         "impl",
2026-07-26T22:33:03.0997595Z         "unit"
2026-07-26T22:33:03.0997681Z       ],
2026-07-26T22:33:03.0997767Z       "stages": {
2026-07-26T22:33:03.0997896Z         "doc": {
2026-07-26T22:33:03.0997985Z           "complete": true,
2026-07-26T22:33:03.0998068Z           "evidence": [
2026-07-26T22:33:03.0998148Z             {
2026-07-26T22:33:03.0998248Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.0998334Z               "line": 81
2026-07-26T22:33:03.0998425Z             }
2026-07-26T22:33:03.0998505Z           ]
2026-07-26T22:33:03.0998591Z         },
2026-07-26T22:33:03.0998678Z         "impl": {
2026-07-26T22:33:03.0998773Z           "complete": true,
2026-07-26T22:33:03.0998858Z           "evidence": [
2026-07-26T22:33:03.0998934Z             {
2026-07-26T22:33:03.0999137Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.0999232Z               "line": 92
2026-07-26T22:33:03.0999313Z             },
2026-07-26T22:33:03.0999399Z             {
2026-07-26T22:33:03.0999527Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.0999613Z               "line": 118
2026-07-26T22:33:03.0999695Z             },
2026-07-26T22:33:03.0999776Z             {
2026-07-26T22:33:03.0999894Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.0999976Z               "line": 149
2026-07-26T22:33:03.1000057Z             },
2026-07-26T22:33:03.1000142Z             {
2026-07-26T22:33:03.1000257Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.1000353Z               "line": 638
2026-07-26T22:33:03.1000429Z             },
2026-07-26T22:33:03.1000514Z             {
2026-07-26T22:33:03.1000620Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.1000705Z               "line": 730
2026-07-26T22:33:03.1000786Z             },
2026-07-26T22:33:03.1000867Z             {
2026-07-26T22:33:03.1000964Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1001072Z               "line": 10564
2026-07-26T22:33:03.1001177Z             },
2026-07-26T22:33:03.1001279Z             {
2026-07-26T22:33:03.1001387Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1001579Z               "line": 10612
2026-07-26T22:33:03.1001660Z             }
2026-07-26T22:33:03.1001748Z           ]
2026-07-26T22:33:03.1001829Z         },
2026-07-26T22:33:03.1001915Z         "int": {
2026-07-26T22:33:03.1002005Z           "complete": false,
2026-07-26T22:33:03.1002098Z           "evidence": []
2026-07-26T22:33:03.1002175Z         },
2026-07-26T22:33:03.1002267Z         "unit": {
2026-07-26T22:33:03.1002362Z           "complete": true,
2026-07-26T22:33:03.1002447Z           "evidence": [
2026-07-26T22:33:03.1002538Z             {
2026-07-26T22:33:03.1002658Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.1002742Z               "line": 388
2026-07-26T22:33:03.1002814Z             },
2026-07-26T22:33:03.1002901Z             {
2026-07-26T22:33:03.1003119Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.1003211Z               "line": 446
2026-07-26T22:33:03.1003286Z             },
2026-07-26T22:33:03.1003372Z             {
2026-07-26T22:33:03.1003492Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.1003582Z               "line": 1291
2026-07-26T22:33:03.1003658Z             },
2026-07-26T22:33:03.1003749Z             {
2026-07-26T22:33:03.1003850Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1003929Z               "line": 16403
2026-07-26T22:33:03.1004011Z             }
2026-07-26T22:33:03.1004088Z           ]
2026-07-26T22:33:03.1004160Z         }
2026-07-26T22:33:03.1004240Z       }
2026-07-26T22:33:03.1004334Z     },
2026-07-26T22:33:03.1004425Z     {
2026-07-26T22:33:03.1004525Z       "id": "REQ-MANIFEST-4",
2026-07-26T22:33:03.1005229Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-07-26T22:33:03.1005333Z       "requiredStages": [
2026-07-26T22:33:03.1005430Z         "doc",
2026-07-26T22:33:03.1005510Z         "impl",
2026-07-26T22:33:03.1005590Z         "unit"
2026-07-26T22:33:03.1005676Z       ],
2026-07-26T22:33:03.1005763Z       "stages": {
2026-07-26T22:33:03.1005838Z         "doc": {
2026-07-26T22:33:03.1005933Z           "complete": true,
2026-07-26T22:33:03.1006020Z           "evidence": [
2026-07-26T22:33:03.1006092Z             {
2026-07-26T22:33:03.1006187Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.1006277Z               "line": 92
2026-07-26T22:33:03.1006354Z             }
2026-07-26T22:33:03.1006435Z           ]
2026-07-26T22:33:03.1006515Z         },
2026-07-26T22:33:03.1006607Z         "impl": {
2026-07-26T22:33:03.1006693Z           "complete": true,
2026-07-26T22:33:03.1006783Z           "evidence": [
2026-07-26T22:33:03.1006864Z             {
2026-07-26T22:33:03.1006984Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.1007074Z               "line": 100
2026-07-26T22:33:03.1007154Z             },
2026-07-26T22:33:03.1007234Z             {
2026-07-26T22:33:03.1007350Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.1007441Z               "line": 208
2026-07-26T22:33:03.1007521Z             },
2026-07-26T22:33:03.1007611Z             {
2026-07-26T22:33:03.1007722Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.1007816Z               "line": 83
2026-07-26T22:33:03.1007906Z             },
2026-07-26T22:33:03.1007984Z             {
2026-07-26T22:33:03.1008103Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.1008188Z               "line": 782
2026-07-26T22:33:03.1008269Z             },
2026-07-26T22:33:03.1008355Z             {
2026-07-26T22:33:03.1008470Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.1008550Z               "line": 807
2026-07-26T22:33:03.1008624Z             }
2026-07-26T22:33:03.1008704Z           ]
2026-07-26T22:33:03.1008780Z         },
2026-07-26T22:33:03.1009028Z         "int": {
2026-07-26T22:33:03.1009118Z           "complete": false,
2026-07-26T22:33:03.1009209Z           "evidence": []
2026-07-26T22:33:03.1009281Z         },
2026-07-26T22:33:03.1009361Z         "unit": {
2026-07-26T22:33:03.1009446Z           "complete": true,
2026-07-26T22:33:03.1009541Z           "evidence": [
2026-07-26T22:33:03.1009617Z             {
2026-07-26T22:33:03.1009740Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.1009820Z               "line": 1837
2026-07-26T22:33:03.1009907Z             },
2026-07-26T22:33:03.1009983Z             {
2026-07-26T22:33:03.1010106Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.1010187Z               "line": 1870
2026-07-26T22:33:03.1010270Z             },
2026-07-26T22:33:03.1010350Z             {
2026-07-26T22:33:03.1010560Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.1010645Z               "line": 1629
2026-07-26T22:33:03.1010736Z             }
2026-07-26T22:33:03.1010817Z           ]
2026-07-26T22:33:03.1010899Z         }
2026-07-26T22:33:03.1010979Z       }
2026-07-26T22:33:03.1011069Z     },
2026-07-26T22:33:03.1011141Z     {
2026-07-26T22:33:03.1011242Z       "id": "REQ-MANIFEST-5",
2026-07-26T22:33:03.1014071Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-07-26T22:33:03.1014180Z       "requiredStages": [
2026-07-26T22:33:03.1014261Z         "doc",
2026-07-26T22:33:03.1014338Z         "impl",
2026-07-26T22:33:03.1014424Z         "unit"
2026-07-26T22:33:03.1014499Z       ],
2026-07-26T22:33:03.1014580Z       "stages": {
2026-07-26T22:33:03.1014663Z         "doc": {
2026-07-26T22:33:03.1014753Z           "complete": true,
2026-07-26T22:33:03.1014847Z           "evidence": [
2026-07-26T22:33:03.1014927Z             {
2026-07-26T22:33:03.1015023Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.1015113Z               "line": 83
2026-07-26T22:33:03.1015202Z             }
2026-07-26T22:33:03.1015282Z           ]
2026-07-26T22:33:03.1015364Z         },
2026-07-26T22:33:03.1015437Z         "impl": {
2026-07-26T22:33:03.1015540Z           "complete": true,
2026-07-26T22:33:03.1015626Z           "evidence": [
2026-07-26T22:33:03.1015703Z             {
2026-07-26T22:33:03.1015821Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.1015916Z               "line": 137
2026-07-26T22:33:03.1015994Z             }
2026-07-26T22:33:03.1016070Z           ]
2026-07-26T22:33:03.1016146Z         },
2026-07-26T22:33:03.1016231Z         "int": {
2026-07-26T22:33:03.1016323Z           "complete": false,
2026-07-26T22:33:03.1016413Z           "evidence": []
2026-07-26T22:33:03.1016489Z         },
2026-07-26T22:33:03.1016570Z         "unit": {
2026-07-26T22:33:03.1016667Z           "complete": true,
2026-07-26T22:33:03.1016757Z           "evidence": [
2026-07-26T22:33:03.1016842Z             {
2026-07-26T22:33:03.1016958Z               "path": "crates/spt-runtime/src/profile.rs",
2026-07-26T22:33:03.1017042Z               "line": 421
2026-07-26T22:33:03.1017123Z             },
2026-07-26T22:33:03.1017306Z             {
2026-07-26T22:33:03.1017429Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.1017525Z               "line": 1364
2026-07-26T22:33:03.1017616Z             },
2026-07-26T22:33:03.1017695Z             {
2026-07-26T22:33:03.1017813Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.1017890Z               "line": 1393
2026-07-26T22:33:03.1017972Z             },
2026-07-26T22:33:03.1018052Z             {
2026-07-26T22:33:03.1018171Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.1018253Z               "line": 1433
2026-07-26T22:33:03.1018334Z             },
2026-07-26T22:33:03.1018410Z             {
2026-07-26T22:33:03.1018530Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.1018625Z               "line": 1448
2026-07-26T22:33:03.1018772Z             }
2026-07-26T22:33:03.1018854Z           ]
2026-07-26T22:33:03.1018935Z         }
2026-07-26T22:33:03.1019087Z       }
2026-07-26T22:33:03.1019169Z     },
2026-07-26T22:33:03.1019250Z     {
2026-07-26T22:33:03.1019349Z       "id": "REQ-MANIFEST-6",
2026-07-26T22:33:03.1021382Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-07-26T22:33:03.1021492Z       "requiredStages": [
2026-07-26T22:33:03.1021568Z         "doc",
2026-07-26T22:33:03.1021653Z         "unit"
2026-07-26T22:33:03.1021741Z       ],
2026-07-26T22:33:03.1021821Z       "stages": {
2026-07-26T22:33:03.1021945Z         "doc": {
2026-07-26T22:33:03.1022041Z           "complete": true,
2026-07-26T22:33:03.1022117Z           "evidence": [
2026-07-26T22:33:03.1022192Z             {
2026-07-26T22:33:03.1022287Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.1022375Z               "line": 171
2026-07-26T22:33:03.1022451Z             }
2026-07-26T22:33:03.1022526Z           ]
2026-07-26T22:33:03.1022607Z         },
2026-07-26T22:33:03.1022695Z         "impl": {
2026-07-26T22:33:03.1022780Z           "complete": false,
2026-07-26T22:33:03.1022869Z           "evidence": []
2026-07-26T22:33:03.1022945Z         },
2026-07-26T22:33:03.1023035Z         "int": {
2026-07-26T22:33:03.1023134Z           "complete": false,
2026-07-26T22:33:03.1023223Z           "evidence": []
2026-07-26T22:33:03.1023305Z         },
2026-07-26T22:33:03.1023387Z         "unit": {
2026-07-26T22:33:03.1023472Z           "complete": true,
2026-07-26T22:33:03.1023562Z           "evidence": [
2026-07-26T22:33:03.1023644Z             {
2026-07-26T22:33:03.1023778Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.1023886Z               "line": 1470
2026-07-26T22:33:03.1023969Z             }
2026-07-26T22:33:03.1024040Z           ]
2026-07-26T22:33:03.1024126Z         }
2026-07-26T22:33:03.1024205Z       }
2026-07-26T22:33:03.1024283Z     },
2026-07-26T22:33:03.1024369Z     {
2026-07-26T22:33:03.1024464Z       "id": "REQ-MANIFEST-7",
2026-07-26T22:33:03.1027373Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-07-26T22:33:03.1027584Z       "requiredStages": [
2026-07-26T22:33:03.1027669Z         "doc",
2026-07-26T22:33:03.1027750Z         "impl",
2026-07-26T22:33:03.1027842Z         "unit"
2026-07-26T22:33:03.1027922Z       ],
2026-07-26T22:33:03.1028012Z       "stages": {
2026-07-26T22:33:03.1028090Z         "doc": {
2026-07-26T22:33:03.1028186Z           "complete": true,
2026-07-26T22:33:03.1028373Z           "evidence": [
2026-07-26T22:33:03.1028455Z             {
2026-07-26T22:33:03.1028556Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.1028655Z               "line": 53
2026-07-26T22:33:03.1028741Z             }
2026-07-26T22:33:03.1028818Z           ]
2026-07-26T22:33:03.1028904Z         },
2026-07-26T22:33:03.1029066Z         "impl": {
2026-07-26T22:33:03.1029156Z           "complete": true,
2026-07-26T22:33:03.1029247Z           "evidence": [
2026-07-26T22:33:03.1029327Z             {
2026-07-26T22:33:03.1029443Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1029533Z               "line": 89
2026-07-26T22:33:03.1029599Z             }
2026-07-26T22:33:03.1029685Z           ]
2026-07-26T22:33:03.1029758Z         },
2026-07-26T22:33:03.1029842Z         "int": {
2026-07-26T22:33:03.1029933Z           "complete": false,
2026-07-26T22:33:03.1030020Z           "evidence": []
2026-07-26T22:33:03.1030096Z         },
2026-07-26T22:33:03.1030185Z         "unit": {
2026-07-26T22:33:03.1030267Z           "complete": true,
2026-07-26T22:33:03.1030358Z           "evidence": [
2026-07-26T22:33:03.1030435Z             {
2026-07-26T22:33:03.1030552Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.1030637Z               "line": 2070
2026-07-26T22:33:03.1030714Z             }
2026-07-26T22:33:03.1030799Z           ]
2026-07-26T22:33:03.1030879Z         }
2026-07-26T22:33:03.1030954Z       }
2026-07-26T22:33:03.1031032Z     },
2026-07-26T22:33:03.1031108Z     {
2026-07-26T22:33:03.1031203Z       "id": "REQ-MANIFEST-8",
2026-07-26T22:33:03.1033368Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-07-26T22:33:03.1033476Z       "requiredStages": [
2026-07-26T22:33:03.1033562Z         "doc",
2026-07-26T22:33:03.1033643Z         "impl",
2026-07-26T22:33:03.1033732Z         "unit",
2026-07-26T22:33:03.1033807Z         "int"
2026-07-26T22:33:03.1033884Z       ],
2026-07-26T22:33:03.1033966Z       "stages": {
2026-07-26T22:33:03.1034051Z         "doc": {
2026-07-26T22:33:03.1034141Z           "complete": true,
2026-07-26T22:33:03.1034228Z           "evidence": [
2026-07-26T22:33:03.1034304Z             {
2026-07-26T22:33:03.1034404Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.1034485Z               "line": 214
2026-07-26T22:33:03.1034571Z             },
2026-07-26T22:33:03.1034647Z             {
2026-07-26T22:33:03.1034747Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.1034833Z               "line": 64
2026-07-26T22:33:03.1035033Z             }
2026-07-26T22:33:03.1035114Z           ]
2026-07-26T22:33:03.1035191Z         },
2026-07-26T22:33:03.1035277Z         "impl": {
2026-07-26T22:33:03.1035367Z           "complete": true,
2026-07-26T22:33:03.1035453Z           "evidence": [
2026-07-26T22:33:03.1035535Z             {
2026-07-26T22:33:03.1035657Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-07-26T22:33:03.1035739Z               "line": 228
2026-07-26T22:33:03.1035831Z             },
2026-07-26T22:33:03.1035911Z             {
2026-07-26T22:33:03.1036038Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.1036129Z               "line": 750
2026-07-26T22:33:03.1036214Z             }
2026-07-26T22:33:03.1036289Z           ]
2026-07-26T22:33:03.1036379Z         },
2026-07-26T22:33:03.1036470Z         "int": {
2026-07-26T22:33:03.1036660Z           "complete": true,
2026-07-26T22:33:03.1036756Z           "evidence": [
2026-07-26T22:33:03.1036847Z             {
2026-07-26T22:33:03.1036989Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-07-26T22:33:03.1037086Z               "line": 18
2026-07-26T22:33:03.1037162Z             }
2026-07-26T22:33:03.1037248Z           ]
2026-07-26T22:33:03.1037332Z         },
2026-07-26T22:33:03.1037415Z         "unit": {
2026-07-26T22:33:03.1037496Z           "complete": true,
2026-07-26T22:33:03.1037595Z           "evidence": [
2026-07-26T22:33:03.1037676Z             {
2026-07-26T22:33:03.1037806Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.1037891Z               "line": 2088
2026-07-26T22:33:03.1037982Z             },
2026-07-26T22:33:03.1038054Z             {
2026-07-26T22:33:03.1038181Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-07-26T22:33:03.1038258Z               "line": 322
2026-07-26T22:33:03.1038340Z             },
2026-07-26T22:33:03.1038422Z             {
2026-07-26T22:33:03.1038544Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-07-26T22:33:03.1038626Z               "line": 338
2026-07-26T22:33:03.1038717Z             },
2026-07-26T22:33:03.1038783Z             {
2026-07-26T22:33:03.1038906Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-07-26T22:33:03.1039073Z               "line": 351
2026-07-26T22:33:03.1039163Z             },
2026-07-26T22:33:03.1039249Z             {
2026-07-26T22:33:03.1039369Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.1039450Z               "line": 866
2026-07-26T22:33:03.1039530Z             },
2026-07-26T22:33:03.1039606Z             {
2026-07-26T22:33:03.1039717Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.1039807Z               "line": 880
2026-07-26T22:33:03.1039887Z             }
2026-07-26T22:33:03.1039964Z           ]
2026-07-26T22:33:03.1040050Z         }
2026-07-26T22:33:03.1040140Z       }
2026-07-26T22:33:03.1040221Z     },
2026-07-26T22:33:03.1040299Z     {
2026-07-26T22:33:03.1040407Z       "id": "REQ-MANIFEST-NODE-KEY",
2026-07-26T22:33:03.1044635Z       "title": "A new session-scoped manifest fill key `{node}` resolves to THIS node's advertised label — available wherever the session-scoped keys ({id}/{session_id}/{session_name}) populate: BOTH topologies' spawn-prep catalogs (harnesshost.rs:111-118 self-spawn guaranteed-fill + lifecycle.rs:280 base lifecycle keys, at minimum [session.self] and [session.resume]) AND lazy [strings] eligibility (ADR-0029 family). VALUE (design-true per CONTEXT §node label / REQ-SUBNET-3): the node's ADVERTISED LABEL — the same value node_label_display renders — read from the label store (NodeLabel, registry.rs:118/220, OS-hostname default re-checked at daemon startup), NOT the pubkey and NOT a fresh gethostname at fill time when the store already holds the refreshed label; fall back to the OS hostname only if no label is known. perri's concrete use: templating `--remote-control {id}--{node}` in the claude-spt launch/resume commands. CAVEAT (documented in the manifest.md key-table row AND here): SINGLE-TOKEN fills only — tokenize-then-fill (REQ post-F-009) cannot produce a space-carrying argv element, so composite display names like `<id> @ <node>` remain adapter-shim territory (claude-spt v0.10.3's launch shim stays the reference for those); {node} COMPLEMENTS the shim for tokenizable args, it does not replace it. Origin: perri fill-catalog-gap finding 2026-07-02, operator-promoted into BUILD-F023-WANIDLE (additive, independent of the delivery legs). (NODEKEY-FOLD)",
2026-07-26T22:33:03.1044864Z       "requiredStages": [
2026-07-26T22:33:03.1044949Z         "doc",
2026-07-26T22:33:03.1045035Z         "impl",
2026-07-26T22:33:03.1045113Z         "unit"
2026-07-26T22:33:03.1045193Z       ],
2026-07-26T22:33:03.1045274Z       "stages": {
2026-07-26T22:33:03.1045370Z         "doc": {
2026-07-26T22:33:03.1045446Z           "complete": true,
2026-07-26T22:33:03.1045631Z           "evidence": [
2026-07-26T22:33:03.1045718Z             {
2026-07-26T22:33:03.1045818Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.1045913Z               "line": 181
2026-07-26T22:33:03.1045999Z             }
2026-07-26T22:33:03.1046076Z           ]
2026-07-26T22:33:03.1046166Z         },
2026-07-26T22:33:03.1046242Z         "impl": {
2026-07-26T22:33:03.1046333Z           "complete": true,
2026-07-26T22:33:03.1046419Z           "evidence": [
2026-07-26T22:33:03.1046509Z             {
2026-07-26T22:33:03.1046627Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.1046722Z               "line": 681
2026-07-26T22:33:03.1046802Z             },
2026-07-26T22:33:03.1046887Z             {
2026-07-26T22:33:03.1047006Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.1047102Z               "line": 470
2026-07-26T22:33:03.1047183Z             },
2026-07-26T22:33:03.1047273Z             {
2026-07-26T22:33:03.1047398Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-07-26T22:33:03.1047493Z               "line": 29
2026-07-26T22:33:03.1047573Z             }
2026-07-26T22:33:03.1047655Z           ]
2026-07-26T22:33:03.1047732Z         },
2026-07-26T22:33:03.1047822Z         "int": {
2026-07-26T22:33:03.1047922Z           "complete": false,
2026-07-26T22:33:03.1048013Z           "evidence": []
2026-07-26T22:33:03.1048102Z         },
2026-07-26T22:33:03.1048183Z         "unit": {
2026-07-26T22:33:03.1048275Z           "complete": true,
2026-07-26T22:33:03.1048366Z           "evidence": [
2026-07-26T22:33:03.1048451Z             {
2026-07-26T22:33:03.1048570Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.1048657Z               "line": 425
2026-07-26T22:33:03.1048732Z             },
2026-07-26T22:33:03.1048818Z             {
2026-07-26T22:33:03.1049028Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.1049119Z               "line": 450
2026-07-26T22:33:03.1049200Z             },
2026-07-26T22:33:03.1049282Z             {
2026-07-26T22:33:03.1049399Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1049499Z               "line": 1545
2026-07-26T22:33:03.1049575Z             },
2026-07-26T22:33:03.1049662Z             {
2026-07-26T22:33:03.1049775Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-07-26T22:33:03.1049866Z               "line": 79
2026-07-26T22:33:03.1049939Z             }
2026-07-26T22:33:03.1050015Z           ]
2026-07-26T22:33:03.1050090Z         }
2026-07-26T22:33:03.1050181Z       }
2026-07-26T22:33:03.1050263Z     },
2026-07-26T22:33:03.1050344Z     {
2026-07-26T22:33:03.1050447Z       "id": "REQ-MANIFEST-SUBST",
2026-07-26T22:33:03.1053135Z       "title": "Manifest substitution primitives for resolve-not-execute (ADR-0029, supersedes a rejected `spt api run-hook`): (1) two adapter-static substitution keys `{adapter_dir}` (the registry record's precise source_dir — install dir, survives updates, the dir bare-program resolution uses) and `{adapter_name}`, available wherever command/string substitution runs; (2) lazy substitution INSIDE `[strings]` values at `get-string` read time, scoped to those adapter-static keys ONLY (session-scoped {id}/{session_id}/… are NOT available — get-string carries no session; a get-string --session-id is a deferred larger change). Invariant preserved: spt-core never executes a string — it substitutes and returns; the adapter's own wrapper executes the result (e.g. a CC hook dispatcher get-strings its packed binary once per session into an env var, then runs it per-hook, so hook logic rides `spt adapter update`). (v0.16.0)",
2026-07-26T22:33:03.1053454Z       "requiredStages": [
2026-07-26T22:33:03.1053529Z         "doc",
2026-07-26T22:33:03.1053625Z         "impl",
2026-07-26T22:33:03.1053707Z         "unit"
2026-07-26T22:33:03.1053792Z       ],
2026-07-26T22:33:03.1053872Z       "stages": {
2026-07-26T22:33:03.1053963Z         "doc": {
2026-07-26T22:33:03.1054140Z           "complete": true,
2026-07-26T22:33:03.1054235Z           "evidence": [
2026-07-26T22:33:03.1054317Z             {
2026-07-26T22:33:03.1054418Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.1054502Z               "line": 165
2026-07-26T22:33:03.1054582Z             },
2026-07-26T22:33:03.1054663Z             {
2026-07-26T22:33:03.1054763Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.1054852Z               "line": 322
2026-07-26T22:33:03.1054927Z             },
2026-07-26T22:33:03.1055014Z             {
2026-07-26T22:33:03.1055200Z               "path": "docs/adr/0029-adapter-update-arc-resolve-not-execute.md",
2026-07-26T22:33:03.1055290Z               "line": 3
2026-07-26T22:33:03.1055377Z             }
2026-07-26T22:33:03.1055458Z           ]
2026-07-26T22:33:03.1055538Z         },
2026-07-26T22:33:03.1055615Z         "impl": {
2026-07-26T22:33:03.1055715Z           "complete": true,
2026-07-26T22:33:03.1055796Z           "evidence": [
2026-07-26T22:33:03.1055891Z             {
2026-07-26T22:33:03.1056002Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:03.1056087Z               "line": 267
2026-07-26T22:33:03.1056182Z             },
2026-07-26T22:33:03.1056254Z             {
2026-07-26T22:33:03.1056378Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.1056468Z               "line": 144
2026-07-26T22:33:03.1056544Z             },
2026-07-26T22:33:03.1056617Z             {
2026-07-26T22:33:03.1056735Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.1056817Z               "line": 656
2026-07-26T22:33:03.1056898Z             },
2026-07-26T22:33:03.1056979Z             {
2026-07-26T22:33:03.1057102Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.1057177Z               "line": 669
2026-07-26T22:33:03.1057269Z             },
2026-07-26T22:33:03.1057344Z             {
2026-07-26T22:33:03.1057465Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.1057557Z               "line": 680
2026-07-26T22:33:03.1057639Z             },
2026-07-26T22:33:03.1057719Z             {
2026-07-26T22:33:03.1057925Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.1058015Z               "line": 357
2026-07-26T22:33:03.1058105Z             },
2026-07-26T22:33:03.1058186Z             {
2026-07-26T22:33:03.1058311Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.1058401Z               "line": 469
2026-07-26T22:33:03.1058487Z             },
2026-07-26T22:33:03.1058563Z             {
2026-07-26T22:33:03.1058682Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.1058758Z               "line": 704
2026-07-26T22:33:03.1058860Z             },
2026-07-26T22:33:03.1058935Z             {
2026-07-26T22:33:03.1059135Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.1059227Z               "line": 755
2026-07-26T22:33:03.1059407Z             }
2026-07-26T22:33:03.1059494Z           ]
2026-07-26T22:33:03.1059584Z         },
2026-07-26T22:33:03.1059664Z         "int": {
2026-07-26T22:33:03.1059765Z           "complete": false,
2026-07-26T22:33:03.1059847Z           "evidence": []
2026-07-26T22:33:03.1059931Z         },
2026-07-26T22:33:03.1060006Z         "unit": {
2026-07-26T22:33:03.1060102Z           "complete": true,
2026-07-26T22:33:03.1060194Z           "evidence": [
2026-07-26T22:33:03.1060274Z             {
2026-07-26T22:33:03.1060393Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.1060489Z               "line": 1430
2026-07-26T22:33:03.1060575Z             }
2026-07-26T22:33:03.1060650Z           ]
2026-07-26T22:33:03.1060731Z         }
2026-07-26T22:33:03.1060818Z       }
2026-07-26T22:33:03.1060899Z     },
2026-07-26T22:33:03.1060979Z     {
2026-07-26T22:33:03.1061070Z       "id": "REQ-MESH-1",
2026-07-26T22:33:03.1063146Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-07-26T22:33:03.1063255Z       "requiredStages": [
2026-07-26T22:33:03.1063332Z         "impl",
2026-07-26T22:33:03.1063422Z         "unit",
2026-07-26T22:33:03.1063503Z         "int"
2026-07-26T22:33:03.1063593Z       ],
2026-07-26T22:33:03.1063676Z       "stages": {
2026-07-26T22:33:03.1063756Z         "doc": {
2026-07-26T22:33:03.1063846Z           "complete": false,
2026-07-26T22:33:03.1063947Z           "evidence": []
2026-07-26T22:33:03.1064029Z         },
2026-07-26T22:33:03.1064119Z         "impl": {
2026-07-26T22:33:03.1064223Z           "complete": true,
2026-07-26T22:33:03.1064315Z           "evidence": [
2026-07-26T22:33:03.1064399Z             {
2026-07-26T22:33:03.1064523Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.1064620Z               "line": 1629
2026-07-26T22:33:03.1064696Z             },
2026-07-26T22:33:03.1064786Z             {
2026-07-26T22:33:03.1064906Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1065001Z               "line": 38
2026-07-26T22:33:03.1065081Z             },
2026-07-26T22:33:03.1065156Z             {
2026-07-26T22:33:03.1065276Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1065374Z               "line": 161
2026-07-26T22:33:03.1065450Z             },
2026-07-26T22:33:03.1065536Z             {
2026-07-26T22:33:03.1065656Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1065760Z               "line": 206
2026-07-26T22:33:03.1065836Z             },
2026-07-26T22:33:03.1066041Z             {
2026-07-26T22:33:03.1066160Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1066257Z               "line": 57
2026-07-26T22:33:03.1066333Z             },
2026-07-26T22:33:03.1066413Z             {
2026-07-26T22:33:03.1066548Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-07-26T22:33:03.1066632Z               "line": 24
2026-07-26T22:33:03.1066709Z             },
2026-07-26T22:33:03.1066799Z             {
2026-07-26T22:33:03.1066914Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-07-26T22:33:03.1067018Z               "line": 142
2026-07-26T22:33:03.1067100Z             },
2026-07-26T22:33:03.1067182Z             {
2026-07-26T22:33:03.1067309Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-07-26T22:33:03.1067401Z               "line": 162
2026-07-26T22:33:03.1067558Z             }
2026-07-26T22:33:03.1067648Z           ]
2026-07-26T22:33:03.1067732Z         },
2026-07-26T22:33:03.1067829Z         "int": {
2026-07-26T22:33:03.1067922Z           "complete": true,
2026-07-26T22:33:03.1068017Z           "evidence": [
2026-07-26T22:33:03.1068093Z             {
2026-07-26T22:33:03.1068227Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-07-26T22:33:03.1068317Z               "line": 67
2026-07-26T22:33:03.1068403Z             },
2026-07-26T22:33:03.1068480Z             {
2026-07-26T22:33:03.1068613Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-07-26T22:33:03.1068688Z               "line": 93
2026-07-26T22:33:03.1068776Z             },
2026-07-26T22:33:03.1068856Z             {
2026-07-26T22:33:03.1069047Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-07-26T22:33:03.1069138Z               "line": 117
2026-07-26T22:33:03.1069219Z             },
2026-07-26T22:33:03.1069309Z             {
2026-07-26T22:33:03.1069434Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-07-26T22:33:03.1069524Z               "line": 134
2026-07-26T22:33:03.1069609Z             }
2026-07-26T22:33:03.1069686Z           ]
2026-07-26T22:33:03.1069758Z         },
2026-07-26T22:33:03.1069848Z         "unit": {
2026-07-26T22:33:03.1069938Z           "complete": true,
2026-07-26T22:33:03.1070035Z           "evidence": [
2026-07-26T22:33:03.1070111Z             {
2026-07-26T22:33:03.1070234Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1070311Z               "line": 610
2026-07-26T22:33:03.1070402Z             },
2026-07-26T22:33:03.1070477Z             {
2026-07-26T22:33:03.1070614Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-07-26T22:33:03.1070696Z               "line": 376
2026-07-26T22:33:03.1070782Z             },
2026-07-26T22:33:03.1070863Z             {
2026-07-26T22:33:03.1070996Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-07-26T22:33:03.1071078Z               "line": 412
2026-07-26T22:33:03.1071163Z             },
2026-07-26T22:33:03.1071243Z             {
2026-07-26T22:33:03.1071378Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-07-26T22:33:03.1071497Z               "line": 427
2026-07-26T22:33:03.1071630Z             },
2026-07-26T22:33:03.1071773Z             {
2026-07-26T22:33:03.1071974Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-07-26T22:33:03.1072106Z               "line": 438
2026-07-26T22:33:03.1072197Z             },
2026-07-26T22:33:03.1072275Z             {
2026-07-26T22:33:03.1072408Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-07-26T22:33:03.1072493Z               "line": 449
2026-07-26T22:33:03.1072589Z             },
2026-07-26T22:33:03.1072671Z             {
2026-07-26T22:33:03.1072802Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-07-26T22:33:03.1072887Z               "line": 460
2026-07-26T22:33:03.1072988Z             },
2026-07-26T22:33:03.1073068Z             {
2026-07-26T22:33:03.1073190Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-07-26T22:33:03.1073476Z               "line": 496
2026-07-26T22:33:03.1073558Z             },
2026-07-26T22:33:03.1073644Z             {
2026-07-26T22:33:03.1073762Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-07-26T22:33:03.1073848Z               "line": 519
2026-07-26T22:33:03.1073926Z             },
2026-07-26T22:33:03.1074011Z             {
2026-07-26T22:33:03.1074134Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-07-26T22:33:03.1074226Z               "line": 546
2026-07-26T22:33:03.1074307Z             }
2026-07-26T22:33:03.1074392Z           ]
2026-07-26T22:33:03.1074478Z         }
2026-07-26T22:33:03.1074565Z       }
2026-07-26T22:33:03.1074645Z     },
2026-07-26T22:33:03.1074730Z     {
2026-07-26T22:33:03.1074812Z       "id": "REQ-MESH-2",
2026-07-26T22:33:03.1077484Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-07-26T22:33:03.1077598Z       "requiredStages": [
2026-07-26T22:33:03.1077684Z         "impl",
2026-07-26T22:33:03.1077771Z         "unit",
2026-07-26T22:33:03.1077864Z         "int"
2026-07-26T22:33:03.1077956Z       ],
2026-07-26T22:33:03.1078038Z       "stages": {
2026-07-26T22:33:03.1078133Z         "doc": {
2026-07-26T22:33:03.1078222Z           "complete": false,
2026-07-26T22:33:03.1078307Z           "evidence": []
2026-07-26T22:33:03.1078384Z         },
2026-07-26T22:33:03.1078506Z         "impl": {
2026-07-26T22:33:03.1078596Z           "complete": true,
2026-07-26T22:33:03.1078682Z           "evidence": [
2026-07-26T22:33:03.1078754Z             {
2026-07-26T22:33:03.1078877Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.1079040Z               "line": 1373
2026-07-26T22:33:03.1079126Z             },
2026-07-26T22:33:03.1079206Z             {
2026-07-26T22:33:03.1079336Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.1079416Z               "line": 118
2026-07-26T22:33:03.1079507Z             },
2026-07-26T22:33:03.1079587Z             {
2026-07-26T22:33:03.1079721Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.1079812Z               "line": 347
2026-07-26T22:33:03.1079892Z             },
2026-07-26T22:33:03.1079975Z             {
2026-07-26T22:33:03.1083486Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.1083609Z               "line": 389
2026-07-26T22:33:03.1083708Z             },
2026-07-26T22:33:03.1083799Z             {
2026-07-26T22:33:03.1083947Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.1084036Z               "line": 403
2026-07-26T22:33:03.1084113Z             },
2026-07-26T22:33:03.1084195Z             {
2026-07-26T22:33:03.1084323Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.1084404Z               "line": 647
2026-07-26T22:33:03.1084486Z             },
2026-07-26T22:33:03.1084557Z             {
2026-07-26T22:33:03.1084680Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.1084777Z               "line": 662
2026-07-26T22:33:03.1084867Z             },
2026-07-26T22:33:03.1084953Z             {
2026-07-26T22:33:03.1085072Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.1085295Z               "line": 689
2026-07-26T22:33:03.1085367Z             },
2026-07-26T22:33:03.1085440Z             {
2026-07-26T22:33:03.1085562Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1085658Z               "line": 207
2026-07-26T22:33:03.1085735Z             },
2026-07-26T22:33:03.1085821Z             {
2026-07-26T22:33:03.1085939Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1086031Z               "line": 812
2026-07-26T22:33:03.1086108Z             },
2026-07-26T22:33:03.1086192Z             {
2026-07-26T22:33:03.1086310Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1086396Z               "line": 873
2026-07-26T22:33:03.1086481Z             },
2026-07-26T22:33:03.1086561Z             {
2026-07-26T22:33:03.1086771Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1086866Z               "line": 934
2026-07-26T22:33:03.1086956Z             },
2026-07-26T22:33:03.1087043Z             {
2026-07-26T22:33:03.1087167Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1087257Z               "line": 975
2026-07-26T22:33:03.1087334Z             },
2026-07-26T22:33:03.1087410Z             {
2026-07-26T22:33:03.1087528Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.1087619Z               "line": 122
2026-07-26T22:33:03.1087701Z             },
2026-07-26T22:33:03.1087781Z             {
2026-07-26T22:33:03.1087896Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1087988Z               "line": 44
2026-07-26T22:33:03.1088072Z             },
2026-07-26T22:33:03.1088153Z             {
2026-07-26T22:33:03.1088264Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1088364Z               "line": 184
2026-07-26T22:33:03.1088434Z             },
2026-07-26T22:33:03.1088511Z             {
2026-07-26T22:33:03.1088622Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1088725Z               "line": 211
2026-07-26T22:33:03.1088815Z             },
2026-07-26T22:33:03.1088906Z             {
2026-07-26T22:33:03.1089170Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1089256Z               "line": 251
2026-07-26T22:33:03.1089333Z             },
2026-07-26T22:33:03.1089413Z             {
2026-07-26T22:33:03.1089528Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1089610Z               "line": 275
2026-07-26T22:33:03.1089696Z             },
2026-07-26T22:33:03.1089771Z             {
2026-07-26T22:33:03.1089886Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1089972Z               "line": 289
2026-07-26T22:33:03.1090062Z             },
2026-07-26T22:33:03.1090138Z             {
2026-07-26T22:33:03.1090258Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1090339Z               "line": 300
2026-07-26T22:33:03.1090424Z             },
2026-07-26T22:33:03.1090501Z             {
2026-07-26T22:33:03.1090620Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1090706Z               "line": 313
2026-07-26T22:33:03.1090786Z             }
2026-07-26T22:33:03.1090864Z           ]
2026-07-26T22:33:03.1090949Z         },
2026-07-26T22:33:03.1091025Z         "int": {
2026-07-26T22:33:03.1091121Z           "complete": true,
2026-07-26T22:33:03.1091208Z           "evidence": [
2026-07-26T22:33:03.1091282Z             {
2026-07-26T22:33:03.1091407Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-07-26T22:33:03.1091499Z               "line": 116
2026-07-26T22:33:03.1091574Z             },
2026-07-26T22:33:03.1091654Z             {
2026-07-26T22:33:03.1091782Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-07-26T22:33:03.1091879Z               "line": 181
2026-07-26T22:33:03.1091959Z             }
2026-07-26T22:33:03.1092039Z           ]
2026-07-26T22:33:03.1092226Z         },
2026-07-26T22:33:03.1092307Z         "unit": {
2026-07-26T22:33:03.1092387Z           "complete": true,
2026-07-26T22:33:03.1092470Z           "evidence": [
2026-07-26T22:33:03.1092541Z             {
2026-07-26T22:33:03.1092664Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1092746Z               "line": 1087
2026-07-26T22:33:03.1092827Z             },
2026-07-26T22:33:03.1092908Z             {
2026-07-26T22:33:03.1093026Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1093114Z               "line": 1104
2026-07-26T22:33:03.1093194Z             },
2026-07-26T22:33:03.1093275Z             {
2026-07-26T22:33:03.1093375Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1093457Z               "line": 1112
2026-07-26T22:33:03.1093532Z             },
2026-07-26T22:33:03.1093729Z             {
2026-07-26T22:33:03.1093847Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1093946Z               "line": 1136
2026-07-26T22:33:03.1094022Z             },
2026-07-26T22:33:03.1094103Z             {
2026-07-26T22:33:03.1094221Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-07-26T22:33:03.1094315Z               "line": 1499
2026-07-26T22:33:03.1094387Z             },
2026-07-26T22:33:03.1094469Z             {
2026-07-26T22:33:03.1094587Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1094668Z               "line": 347
2026-07-26T22:33:03.1094751Z             },
2026-07-26T22:33:03.1094836Z             {
2026-07-26T22:33:03.1094945Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1095036Z               "line": 370
2026-07-26T22:33:03.1095117Z             },
2026-07-26T22:33:03.1095203Z             {
2026-07-26T22:33:03.1095308Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1095394Z               "line": 407
2026-07-26T22:33:03.1095480Z             },
2026-07-26T22:33:03.1095564Z             {
2026-07-26T22:33:03.1095666Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1095746Z               "line": 431
2026-07-26T22:33:03.1095823Z             },
2026-07-26T22:33:03.1095903Z             {
2026-07-26T22:33:03.1096014Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1096104Z               "line": 483
2026-07-26T22:33:03.1096185Z             },
2026-07-26T22:33:03.1096262Z             {
2026-07-26T22:33:03.1096376Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1096456Z               "line": 499
2026-07-26T22:33:03.1096523Z             },
2026-07-26T22:33:03.1096596Z             {
2026-07-26T22:33:03.1096710Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1096799Z               "line": 514
2026-07-26T22:33:03.1096884Z             },
2026-07-26T22:33:03.1096970Z             {
2026-07-26T22:33:03.1097088Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1097183Z               "line": 531
2026-07-26T22:33:03.1097259Z             }
2026-07-26T22:33:03.1097341Z           ]
2026-07-26T22:33:03.1097431Z         }
2026-07-26T22:33:03.1097512Z       }
2026-07-26T22:33:03.1097589Z     },
2026-07-26T22:33:03.1097660Z     {
2026-07-26T22:33:03.1097750Z       "id": "REQ-MESH-3",
2026-07-26T22:33:03.1099513Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-07-26T22:33:03.1099617Z       "requiredStages": [
2026-07-26T22:33:03.1099692Z         "impl",
2026-07-26T22:33:03.1099884Z         "unit",
2026-07-26T22:33:03.1099964Z         "int"
2026-07-26T22:33:03.1100050Z       ],
2026-07-26T22:33:03.1100126Z       "stages": {
2026-07-26T22:33:03.1100217Z         "doc": {
2026-07-26T22:33:03.1100312Z           "complete": false,
2026-07-26T22:33:03.1100407Z           "evidence": []
2026-07-26T22:33:03.1100485Z         },
2026-07-26T22:33:03.1100570Z         "impl": {
2026-07-26T22:33:03.1100665Z           "complete": true,
2026-07-26T22:33:03.1100752Z           "evidence": [
2026-07-26T22:33:03.1100837Z             {
2026-07-26T22:33:03.1100965Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.1101051Z               "line": 1016
2026-07-26T22:33:03.1101143Z             }
2026-07-26T22:33:03.1101223Z           ]
2026-07-26T22:33:03.1101304Z         },
2026-07-26T22:33:03.1101472Z         "int": {
2026-07-26T22:33:03.1101561Z           "complete": true,
2026-07-26T22:33:03.1101657Z           "evidence": [
2026-07-26T22:33:03.1101744Z             {
2026-07-26T22:33:03.1101871Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-07-26T22:33:03.1101962Z               "line": 373
2026-07-26T22:33:03.1102039Z             },
2026-07-26T22:33:03.1102120Z             {
2026-07-26T22:33:03.1102243Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-07-26T22:33:03.1102328Z               "line": 436
2026-07-26T22:33:03.1102405Z             }
2026-07-26T22:33:03.1102482Z           ]
2026-07-26T22:33:03.1102566Z         },
2026-07-26T22:33:03.1102647Z         "unit": {
2026-07-26T22:33:03.1102744Z           "complete": true,
2026-07-26T22:33:03.1102820Z           "evidence": [
2026-07-26T22:33:03.1102900Z             {
2026-07-26T22:33:03.1103006Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.1103087Z               "line": 1362
2026-07-26T22:33:03.1103177Z             }
2026-07-26T22:33:03.1103257Z           ]
2026-07-26T22:33:03.1103340Z         }
2026-07-26T22:33:03.1103420Z       }
2026-07-26T22:33:03.1103501Z     },
2026-07-26T22:33:03.1103582Z     {
2026-07-26T22:33:03.1103665Z       "id": "REQ-MESH-4",
2026-07-26T22:33:03.1105844Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-07-26T22:33:03.1105945Z       "requiredStages": [
2026-07-26T22:33:03.1106025Z         "impl",
2026-07-26T22:33:03.1106120Z         "unit",
2026-07-26T22:33:03.1106197Z         "int"
2026-07-26T22:33:03.1106283Z       ],
2026-07-26T22:33:03.1106364Z       "stages": {
2026-07-26T22:33:03.1106439Z         "doc": {
2026-07-26T22:33:03.1106537Z           "complete": false,
2026-07-26T22:33:03.1106635Z           "evidence": []
2026-07-26T22:33:03.1106712Z         },
2026-07-26T22:33:03.1106788Z         "impl": {
2026-07-26T22:33:03.1106875Z           "complete": true,
2026-07-26T22:33:03.1106969Z           "evidence": [
2026-07-26T22:33:03.1107046Z             {
2026-07-26T22:33:03.1107176Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-07-26T22:33:03.1107256Z               "line": 33
2026-07-26T22:33:03.1107345Z             },
2026-07-26T22:33:03.1107426Z             {
2026-07-26T22:33:03.1107564Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1107690Z               "line": 68
2026-07-26T22:33:03.1107776Z             },
2026-07-26T22:33:03.1107858Z             {
2026-07-26T22:33:03.1108052Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1108144Z               "line": 111
2026-07-26T22:33:03.1108225Z             },
2026-07-26T22:33:03.1108320Z             {
2026-07-26T22:33:03.1108430Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1108516Z               "line": 519
2026-07-26T22:33:03.1108602Z             },
2026-07-26T22:33:03.1108691Z             {
2026-07-26T22:33:03.1108812Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1108896Z               "line": 768
2026-07-26T22:33:03.1109069Z             },
2026-07-26T22:33:03.1109146Z             {
2026-07-26T22:33:03.1109269Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1109360Z               "line": 782
2026-07-26T22:33:03.1109446Z             },
2026-07-26T22:33:03.1109621Z             {
2026-07-26T22:33:03.1109742Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.1109827Z               "line": 132
2026-07-26T22:33:03.1109916Z             },
2026-07-26T22:33:03.1110001Z             {
2026-07-26T22:33:03.1110121Z               "path": "crates/spt-store/src/rotation.rs",
2026-07-26T22:33:03.1110205Z               "line": 26
2026-07-26T22:33:03.1110281Z             },
2026-07-26T22:33:03.1110358Z             {
2026-07-26T22:33:03.1110473Z               "path": "crates/spt-store/src/rotation.rs",
2026-07-26T22:33:03.1110567Z               "line": 97
2026-07-26T22:33:03.1110648Z             },
2026-07-26T22:33:03.1110726Z             {
2026-07-26T22:33:03.1110844Z               "path": "crates/spt-store/src/rotation.rs",
2026-07-26T22:33:03.1110939Z               "line": 119
2026-07-26T22:33:03.1111021Z             },
2026-07-26T22:33:03.1111101Z             {
2026-07-26T22:33:03.1111210Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:03.1111297Z               "line": 82
2026-07-26T22:33:03.1111379Z             },
2026-07-26T22:33:03.1111463Z             {
2026-07-26T22:33:03.1111578Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:03.1111670Z               "line": 111
2026-07-26T22:33:03.1111740Z             },
2026-07-26T22:33:03.1111826Z             {
2026-07-26T22:33:03.1111931Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:03.1112018Z               "line": 232
2026-07-26T22:33:03.1112102Z             },
2026-07-26T22:33:03.1112188Z             {
2026-07-26T22:33:03.1112299Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:03.1112380Z               "line": 245
2026-07-26T22:33:03.1112460Z             },
2026-07-26T22:33:03.1112546Z             {
2026-07-26T22:33:03.1112652Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1112745Z               "line": 9163
2026-07-26T22:33:03.1112822Z             }
2026-07-26T22:33:03.1112908Z           ]
2026-07-26T22:33:03.1112989Z         },
2026-07-26T22:33:03.1113074Z         "int": {
2026-07-26T22:33:03.1113160Z           "complete": true,
2026-07-26T22:33:03.1113256Z           "evidence": [
2026-07-26T22:33:03.1113342Z             {
2026-07-26T22:33:03.1113460Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-07-26T22:33:03.1113542Z               "line": 98
2026-07-26T22:33:03.1113619Z             },
2026-07-26T22:33:03.1113690Z             {
2026-07-26T22:33:03.1113808Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-07-26T22:33:03.1113890Z               "line": 140
2026-07-26T22:33:03.1113976Z             }
2026-07-26T22:33:03.1114057Z           ]
2026-07-26T22:33:03.1114137Z         },
2026-07-26T22:33:03.1114220Z         "unit": {
2026-07-26T22:33:03.1114300Z           "complete": true,
2026-07-26T22:33:03.1114390Z           "evidence": [
2026-07-26T22:33:03.1114466Z             {
2026-07-26T22:33:03.1114591Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-07-26T22:33:03.1114681Z               "line": 187
2026-07-26T22:33:03.1114757Z             },
2026-07-26T22:33:03.1114934Z             {
2026-07-26T22:33:03.1115057Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-07-26T22:33:03.1115142Z               "line": 251
2026-07-26T22:33:03.1115223Z             },
2026-07-26T22:33:03.1115303Z             {
2026-07-26T22:33:03.1115421Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1115503Z               "line": 1209
2026-07-26T22:33:03.1115589Z             },
2026-07-26T22:33:03.1115670Z             {
2026-07-26T22:33:03.1115789Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1115875Z               "line": 1239
2026-07-26T22:33:03.1115951Z             },
2026-07-26T22:33:03.1116032Z             {
2026-07-26T22:33:03.1116152Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1116238Z               "line": 1259
2026-07-26T22:33:03.1116404Z             },
2026-07-26T22:33:03.1116476Z             {
2026-07-26T22:33:03.1116609Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-07-26T22:33:03.1116699Z               "line": 602
2026-07-26T22:33:03.1116782Z             },
2026-07-26T22:33:03.1116866Z             {
2026-07-26T22:33:03.1116986Z               "path": "crates/spt-store/src/rotation.rs",
2026-07-26T22:33:03.1117062Z               "line": 148
2026-07-26T22:33:03.1117144Z             },
2026-07-26T22:33:03.1117229Z             {
2026-07-26T22:33:03.1117348Z               "path": "crates/spt-store/src/rotation.rs",
2026-07-26T22:33:03.1117435Z               "line": 169
2026-07-26T22:33:03.1117510Z             },
2026-07-26T22:33:03.1117586Z             {
2026-07-26T22:33:03.1117706Z               "path": "crates/spt-store/src/rotation.rs",
2026-07-26T22:33:03.1117797Z               "line": 181
2026-07-26T22:33:03.1117882Z             },
2026-07-26T22:33:03.1117962Z             {
2026-07-26T22:33:03.1118086Z               "path": "crates/spt-store/src/rotation.rs",
2026-07-26T22:33:03.1118180Z               "line": 202
2026-07-26T22:33:03.1118264Z             },
2026-07-26T22:33:03.1118351Z             {
2026-07-26T22:33:03.1118475Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:03.1118579Z               "line": 375
2026-07-26T22:33:03.1118665Z             },
2026-07-26T22:33:03.1118747Z             {
2026-07-26T22:33:03.1118856Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:03.1119024Z               "line": 407
2026-07-26T22:33:03.1119100Z             },
2026-07-26T22:33:03.1119185Z             {
2026-07-26T22:33:03.1119290Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1119372Z               "line": 18140
2026-07-26T22:33:03.1119457Z             }
2026-07-26T22:33:03.1119543Z           ]
2026-07-26T22:33:03.1119624Z         }
2026-07-26T22:33:03.1119715Z       }
2026-07-26T22:33:03.1119790Z     },
2026-07-26T22:33:03.1119886Z     {
2026-07-26T22:33:03.1119983Z       "id": "REQ-MESH-5",
2026-07-26T22:33:03.1121381Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-07-26T22:33:03.1121475Z       "requiredStages": [
2026-07-26T22:33:03.1121562Z         "impl",
2026-07-26T22:33:03.1121643Z         "unit"
2026-07-26T22:33:03.1121719Z       ],
2026-07-26T22:33:03.1121804Z       "stages": {
2026-07-26T22:33:03.1121891Z         "doc": {
2026-07-26T22:33:03.1121977Z           "complete": false,
2026-07-26T22:33:03.1122071Z           "evidence": []
2026-07-26T22:33:03.1122143Z         },
2026-07-26T22:33:03.1122230Z         "impl": {
2026-07-26T22:33:03.1122324Z           "complete": true,
2026-07-26T22:33:03.1122405Z           "evidence": [
2026-07-26T22:33:03.1122602Z             {
2026-07-26T22:33:03.1122725Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-07-26T22:33:03.1122821Z               "line": 61
2026-07-26T22:33:03.1122903Z             },
2026-07-26T22:33:03.1122982Z             {
2026-07-26T22:33:03.1123107Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-07-26T22:33:03.1123198Z               "line": 117
2026-07-26T22:33:03.1123269Z             },
2026-07-26T22:33:03.1123353Z             {
2026-07-26T22:33:03.1123477Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.1123568Z               "line": 104
2026-07-26T22:33:03.1123653Z             },
2026-07-26T22:33:03.1123739Z             {
2026-07-26T22:33:03.1123859Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.1123950Z               "line": 106
2026-07-26T22:33:03.1124136Z             },
2026-07-26T22:33:03.1124216Z             {
2026-07-26T22:33:03.1124344Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.1124441Z               "line": 85
2026-07-26T22:33:03.1124522Z             },
2026-07-26T22:33:03.1124607Z             {
2026-07-26T22:33:03.1124726Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.1124809Z               "line": 301
2026-07-26T22:33:03.1124888Z             },
2026-07-26T22:33:03.1124974Z             {
2026-07-26T22:33:03.1125095Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.1125180Z               "line": 424
2026-07-26T22:33:03.1125260Z             },
2026-07-26T22:33:03.1125346Z             {
2026-07-26T22:33:03.1125467Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.1125560Z               "line": 1100
2026-07-26T22:33:03.1125645Z             },
2026-07-26T22:33:03.1125726Z             {
2026-07-26T22:33:03.1125844Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:03.1125944Z               "line": 102
2026-07-26T22:33:03.1126020Z             },
2026-07-26T22:33:03.1126101Z             {
2026-07-26T22:33:03.1126211Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1126296Z               "line": 193
2026-07-26T22:33:03.1126383Z             }
2026-07-26T22:33:03.1126469Z           ]
2026-07-26T22:33:03.1126558Z         },
2026-07-26T22:33:03.1126644Z         "int": {
2026-07-26T22:33:03.1126740Z           "complete": false,
2026-07-26T22:33:03.1126821Z           "evidence": []
2026-07-26T22:33:03.1126902Z         },
2026-07-26T22:33:03.1126983Z         "unit": {
2026-07-26T22:33:03.1127074Z           "complete": true,
2026-07-26T22:33:03.1127169Z           "evidence": [
2026-07-26T22:33:03.1127245Z             {
2026-07-26T22:33:03.1127370Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.1127465Z               "line": 1505
2026-07-26T22:33:03.1127551Z             },
2026-07-26T22:33:03.1127637Z             {
2026-07-26T22:33:03.1127746Z               "path": "crates/spt-store/src/roster.rs",
2026-07-26T22:33:03.1127837Z               "line": 462
2026-07-26T22:33:03.1127918Z             }
2026-07-26T22:33:03.1128005Z           ]
2026-07-26T22:33:03.1128084Z         }
2026-07-26T22:33:03.1128175Z       }
2026-07-26T22:33:03.1128253Z     },
2026-07-26T22:33:03.1128329Z     {
2026-07-26T22:33:03.1128423Z       "id": "REQ-MESH-6",
2026-07-26T22:33:03.1129826Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-07-26T22:33:03.1129922Z       "requiredStages": [
2026-07-26T22:33:03.1130003Z         "impl",
2026-07-26T22:33:03.1130084Z         "unit"
2026-07-26T22:33:03.1130165Z       ],
2026-07-26T22:33:03.1130360Z       "stages": {
2026-07-26T22:33:03.1130441Z         "doc": {
2026-07-26T22:33:03.1130534Z           "complete": false,
2026-07-26T22:33:03.1130628Z           "evidence": []
2026-07-26T22:33:03.1130698Z         },
2026-07-26T22:33:03.1130790Z         "impl": {
2026-07-26T22:33:03.1130876Z           "complete": true,
2026-07-26T22:33:03.1130971Z           "evidence": [
2026-07-26T22:33:03.1131046Z             {
2026-07-26T22:33:03.1131160Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1131255Z               "line": 8576
2026-07-26T22:33:03.1131335Z             }
2026-07-26T22:33:03.1131425Z           ]
2026-07-26T22:33:03.1131502Z         },
2026-07-26T22:33:03.1131583Z         "int": {
2026-07-26T22:33:03.1131659Z           "complete": false,
2026-07-26T22:33:03.1131754Z           "evidence": []
2026-07-26T22:33:03.1131836Z         },
2026-07-26T22:33:03.1132020Z         "unit": {
2026-07-26T22:33:03.1132102Z           "complete": true,
2026-07-26T22:33:03.1132193Z           "evidence": [
2026-07-26T22:33:03.1132279Z             {
2026-07-26T22:33:03.1132378Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1132461Z               "line": 19174
2026-07-26T22:33:03.1132546Z             },
2026-07-26T22:33:03.1132618Z             {
2026-07-26T22:33:03.1132722Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1132795Z               "line": 19201
2026-07-26T22:33:03.1132880Z             },
2026-07-26T22:33:03.1132961Z             {
2026-07-26T22:33:03.1133066Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1133143Z               "line": 19225
2026-07-26T22:33:03.1133232Z             }
2026-07-26T22:33:03.1133313Z           ]
2026-07-26T22:33:03.1133396Z         }
2026-07-26T22:33:03.1133472Z       }
2026-07-26T22:33:03.1133551Z     },
2026-07-26T22:33:03.1133633Z     {
2026-07-26T22:33:03.1133739Z       "id": "REQ-MIGRATE-1",
2026-07-26T22:33:03.1133903Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-07-26T22:33:03.1134008Z       "requiredStages": [],
2026-07-26T22:33:03.1134085Z       "stages": {
2026-07-26T22:33:03.1134167Z         "doc": {
2026-07-26T22:33:03.1134261Z           "complete": false,
2026-07-26T22:33:03.1134352Z           "evidence": []
2026-07-26T22:33:03.1134434Z         },
2026-07-26T22:33:03.1134519Z         "impl": {
2026-07-26T22:33:03.1134599Z           "complete": false,
2026-07-26T22:33:03.1134686Z           "evidence": []
2026-07-26T22:33:03.1134767Z         },
2026-07-26T22:33:03.1134848Z         "int": {
2026-07-26T22:33:03.1134933Z           "complete": false,
2026-07-26T22:33:03.1135030Z           "evidence": []
2026-07-26T22:33:03.1135105Z         },
2026-07-26T22:33:03.1135200Z         "unit": {
2026-07-26T22:33:03.1135277Z           "complete": false,
2026-07-26T22:33:03.1135369Z           "evidence": []
2026-07-26T22:33:03.1135439Z         }
2026-07-26T22:33:03.1135520Z       }
2026-07-26T22:33:03.1135606Z     },
2026-07-26T22:33:03.1135688Z     {
2026-07-26T22:33:03.1135772Z       "id": "REQ-MSG-1",
2026-07-26T22:33:03.1136196Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-07-26T22:33:03.1136296Z       "requiredStages": [
2026-07-26T22:33:03.1136386Z         "impl",
2026-07-26T22:33:03.1136461Z         "unit",
2026-07-26T22:33:03.1136541Z         "int"
2026-07-26T22:33:03.1136623Z       ],
2026-07-26T22:33:03.1136700Z       "stages": {
2026-07-26T22:33:03.1136785Z         "doc": {
2026-07-26T22:33:03.1136865Z           "complete": false,
2026-07-26T22:33:03.1136967Z           "evidence": []
2026-07-26T22:33:03.1137043Z         },
2026-07-26T22:33:03.1137128Z         "impl": {
2026-07-26T22:33:03.1137219Z           "complete": true,
2026-07-26T22:33:03.1137315Z           "evidence": [
2026-07-26T22:33:03.1137410Z             {
2026-07-26T22:33:03.1137539Z               "path": "crates/spt-msg/src/deliver.rs",
2026-07-26T22:33:03.1137711Z               "line": 28
2026-07-26T22:33:03.1137796Z             },
2026-07-26T22:33:03.1137868Z             {
2026-07-26T22:33:03.1137986Z               "path": "crates/spt-msg/src/deliver.rs",
2026-07-26T22:33:03.1138072Z               "line": 94
2026-07-26T22:33:03.1138158Z             },
2026-07-26T22:33:03.1138236Z             {
2026-07-26T22:33:03.1138349Z               "path": "crates/spt-msg/src/deliver.rs",
2026-07-26T22:33:03.1138430Z               "line": 127
2026-07-26T22:33:03.1138517Z             },
2026-07-26T22:33:03.1138602Z             {
2026-07-26T22:33:03.1138706Z               "path": "crates/spt-msg/src/deliver.rs",
2026-07-26T22:33:03.1138783Z               "line": 149
2026-07-26T22:33:03.1138866Z             },
2026-07-26T22:33:03.1139021Z             {
2026-07-26T22:33:03.1139139Z               "path": "crates/spt-msg/src/deliver.rs",
2026-07-26T22:33:03.1139318Z               "line": 174
2026-07-26T22:33:03.1139404Z             },
2026-07-26T22:33:03.1139476Z             {
2026-07-26T22:33:03.1139596Z               "path": "crates/spt-msg/src/listener.rs",
2026-07-26T22:33:03.1139681Z               "line": 18
2026-07-26T22:33:03.1139762Z             },
2026-07-26T22:33:03.1139834Z             {
2026-07-26T22:33:03.1139948Z               "path": "crates/spt-msg/src/ring.rs",
2026-07-26T22:33:03.1140029Z               "line": 13
2026-07-26T22:33:03.1140110Z             },
2026-07-26T22:33:03.1140187Z             {
2026-07-26T22:33:03.1140287Z               "path": "crates/spt-msg/src/ring.rs",
2026-07-26T22:33:03.1140372Z               "line": 62
2026-07-26T22:33:03.1140449Z             },
2026-07-26T22:33:03.1140525Z             {
2026-07-26T22:33:03.1140630Z               "path": "crates/spt-msg/src/wire.rs",
2026-07-26T22:33:03.1140715Z               "line": 13
2026-07-26T22:33:03.1140788Z             }
2026-07-26T22:33:03.1140878Z           ]
2026-07-26T22:33:03.1140954Z         },
2026-07-26T22:33:03.1141035Z         "int": {
2026-07-26T22:33:03.1141127Z           "complete": true,
2026-07-26T22:33:03.1141225Z           "evidence": [
2026-07-26T22:33:03.1141302Z             {
2026-07-26T22:33:03.1141441Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-07-26T22:33:03.1141526Z               "line": 9
2026-07-26T22:33:03.1141606Z             },
2026-07-26T22:33:03.1141692Z             {
2026-07-26T22:33:03.1141815Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-07-26T22:33:03.1141895Z               "line": 56
2026-07-26T22:33:03.1141980Z             },
2026-07-26T22:33:03.1142052Z             {
2026-07-26T22:33:03.1142177Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-07-26T22:33:03.1142261Z               "line": 113
2026-07-26T22:33:03.1142352Z             }
2026-07-26T22:33:03.1142434Z           ]
2026-07-26T22:33:03.1142520Z         },
2026-07-26T22:33:03.1142609Z         "unit": {
2026-07-26T22:33:03.1142701Z           "complete": true,
2026-07-26T22:33:03.1142782Z           "evidence": [
2026-07-26T22:33:03.1142868Z             {
2026-07-26T22:33:03.1142977Z               "path": "crates/spt-msg/src/deliver.rs",
2026-07-26T22:33:03.1143064Z               "line": 246
2026-07-26T22:33:03.1143144Z             },
2026-07-26T22:33:03.1143229Z             {
2026-07-26T22:33:03.1143326Z               "path": "crates/spt-msg/src/deliver.rs",
2026-07-26T22:33:03.1143411Z               "line": 320
2026-07-26T22:33:03.1143492Z             },
2026-07-26T22:33:03.1143583Z             {
2026-07-26T22:33:03.1143679Z               "path": "crates/spt-msg/src/deliver.rs",
2026-07-26T22:33:03.1143774Z               "line": 365
2026-07-26T22:33:03.1143855Z             },
2026-07-26T22:33:03.1143936Z             {
2026-07-26T22:33:03.1144037Z               "path": "crates/spt-msg/src/deliver.rs",
2026-07-26T22:33:03.1144130Z               "line": 388
2026-07-26T22:33:03.1144212Z             },
2026-07-26T22:33:03.1144295Z             {
2026-07-26T22:33:03.1144403Z               "path": "crates/spt-msg/src/deliver.rs",
2026-07-26T22:33:03.1144592Z               "line": 413
2026-07-26T22:33:03.1144674Z             },
2026-07-26T22:33:03.1144760Z             {
2026-07-26T22:33:03.1144869Z               "path": "crates/spt-msg/src/listener.rs",
2026-07-26T22:33:03.1144955Z               "line": 204
2026-07-26T22:33:03.1145041Z             },
2026-07-26T22:33:03.1145117Z             {
2026-07-26T22:33:03.1145232Z               "path": "crates/spt-msg/src/listener.rs",
2026-07-26T22:33:03.1145309Z               "line": 237
2026-07-26T22:33:03.1145404Z             },
2026-07-26T22:33:03.1145484Z             {
2026-07-26T22:33:03.1145604Z               "path": "crates/spt-msg/src/listener.rs",
2026-07-26T22:33:03.1145684Z               "line": 251
2026-07-26T22:33:03.1145770Z             },
2026-07-26T22:33:03.1145846Z             {
2026-07-26T22:33:03.1145962Z               "path": "crates/spt-msg/src/listener.rs",
2026-07-26T22:33:03.1146118Z               "line": 263
2026-07-26T22:33:03.1146196Z             },
2026-07-26T22:33:03.1146277Z             {
2026-07-26T22:33:03.1146395Z               "path": "crates/spt-msg/src/ring.rs",
2026-07-26T22:33:03.1146476Z               "line": 166
2026-07-26T22:33:03.1146554Z             },
2026-07-26T22:33:03.1146634Z             {
2026-07-26T22:33:03.1146737Z               "path": "crates/spt-msg/src/ring.rs",
2026-07-26T22:33:03.1146823Z               "line": 246
2026-07-26T22:33:03.1146914Z             },
2026-07-26T22:33:03.1146993Z             {
2026-07-26T22:33:03.1147101Z               "path": "crates/spt-msg/src/wire.rs",
2026-07-26T22:33:03.1147193Z               "line": 134
2026-07-26T22:33:03.1147294Z             },
2026-07-26T22:33:03.1147373Z             {
2026-07-26T22:33:03.1147484Z               "path": "crates/spt-msg/src/wire.rs",
2026-07-26T22:33:03.1147570Z               "line": 153
2026-07-26T22:33:03.1147660Z             }
2026-07-26T22:33:03.1147745Z           ]
2026-07-26T22:33:03.1147833Z         }
2026-07-26T22:33:03.1147903Z       }
2026-07-26T22:33:03.1147984Z     },
2026-07-26T22:33:03.1148074Z     {
2026-07-26T22:33:03.1148166Z       "id": "REQ-MSG-2",
2026-07-26T22:33:03.1148438Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-07-26T22:33:03.1148533Z       "requiredStages": [
2026-07-26T22:33:03.1148618Z         "impl",
2026-07-26T22:33:03.1148709Z         "unit"
2026-07-26T22:33:03.1148786Z       ],
2026-07-26T22:33:03.1148880Z       "stages": {
2026-07-26T22:33:03.1149019Z         "doc": {
2026-07-26T22:33:03.1149116Z           "complete": false,
2026-07-26T22:33:03.1149204Z           "evidence": []
2026-07-26T22:33:03.1149291Z         },
2026-07-26T22:33:03.1149378Z         "impl": {
2026-07-26T22:33:03.1149464Z           "complete": true,
2026-07-26T22:33:03.1149547Z           "evidence": [
2026-07-26T22:33:03.1149633Z             {
2026-07-26T22:33:03.1149752Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1149837Z               "line": 11
2026-07-26T22:33:03.1149931Z             },
2026-07-26T22:33:03.1150012Z             {
2026-07-26T22:33:03.1150118Z               "path": "crates/spt/src/main.rs",
2026-07-26T22:33:03.1150198Z               "line": 8
2026-07-26T22:33:03.1150288Z             }
2026-07-26T22:33:03.1150365Z           ]
2026-07-26T22:33:03.1150451Z         },
2026-07-26T22:33:03.1150522Z         "int": {
2026-07-26T22:33:03.1150617Z           "complete": false,
2026-07-26T22:33:03.1150709Z           "evidence": []
2026-07-26T22:33:03.1150794Z         },
2026-07-26T22:33:03.1150879Z         "unit": {
2026-07-26T22:33:03.1150976Z           "complete": true,
2026-07-26T22:33:03.1151057Z           "evidence": [
2026-07-26T22:33:03.1151133Z             {
2026-07-26T22:33:03.1151242Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1151339Z               "line": 15155
2026-07-26T22:33:03.1151424Z             },
2026-07-26T22:33:03.1151509Z             {
2026-07-26T22:33:03.1151615Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1151701Z               "line": 15197
2026-07-26T22:33:03.1151891Z             },
2026-07-26T22:33:03.1151963Z             {
2026-07-26T22:33:03.1152068Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1152162Z               "line": 15246
2026-07-26T22:33:03.1152247Z             },
2026-07-26T22:33:03.1152324Z             {
2026-07-26T22:33:03.1152431Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1152521Z               "line": 15296
2026-07-26T22:33:03.1152603Z             },
2026-07-26T22:33:03.1152680Z             {
2026-07-26T22:33:03.1152779Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1152879Z               "line": 17874
2026-07-26T22:33:03.1152966Z             },
2026-07-26T22:33:03.1153046Z             {
2026-07-26T22:33:03.1153146Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1153342Z               "line": 17905
2026-07-26T22:33:03.1153418Z             }
2026-07-26T22:33:03.1153503Z           ]
2026-07-26T22:33:03.1156469Z         }
2026-07-26T22:33:03.1156587Z       }
2026-07-26T22:33:03.1156664Z     },
2026-07-26T22:33:03.1156751Z     {
2026-07-26T22:33:03.1156841Z       "id": "REQ-MSG-3",
2026-07-26T22:33:03.1157240Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-07-26T22:33:03.1157335Z       "requiredStages": [
2026-07-26T22:33:03.1157426Z         "impl",
2026-07-26T22:33:03.1157511Z         "unit",
2026-07-26T22:33:03.1157590Z         "int"
2026-07-26T22:33:03.1157676Z       ],
2026-07-26T22:33:03.1157762Z       "stages": {
2026-07-26T22:33:03.1157845Z         "doc": {
2026-07-26T22:33:03.1157938Z           "complete": false,
2026-07-26T22:33:03.1158034Z           "evidence": []
2026-07-26T22:33:03.1158107Z         },
2026-07-26T22:33:03.1158197Z         "impl": {
2026-07-26T22:33:03.1158286Z           "complete": true,
2026-07-26T22:33:03.1158378Z           "evidence": [
2026-07-26T22:33:03.1158459Z             {
2026-07-26T22:33:03.1158596Z               "path": "crates/spt-msg/src/listener.rs",
2026-07-26T22:33:03.1158674Z               "line": 19
2026-07-26T22:33:03.1158755Z             },
2026-07-26T22:33:03.1158836Z             {
2026-07-26T22:33:03.1159017Z               "path": "crates/spt-msg/src/ready.rs",
2026-07-26T22:33:03.1159107Z               "line": 21
2026-07-26T22:33:03.1159197Z             },
2026-07-26T22:33:03.1159274Z             {
2026-07-26T22:33:03.1159375Z               "path": "crates/spt-msg/src/ready.rs",
2026-07-26T22:33:03.1159450Z               "line": 48
2026-07-26T22:33:03.1159531Z             },
2026-07-26T22:33:03.1159613Z             {
2026-07-26T22:33:03.1159714Z               "path": "crates/spt-msg/src/ready.rs",
2026-07-26T22:33:03.1159802Z               "line": 200
2026-07-26T22:33:03.1159889Z             }
2026-07-26T22:33:03.1159966Z           ]
2026-07-26T22:33:03.1160043Z         },
2026-07-26T22:33:03.1160122Z         "int": {
2026-07-26T22:33:03.1160216Z           "complete": true,
2026-07-26T22:33:03.1160307Z           "evidence": [
2026-07-26T22:33:03.1160388Z             {
2026-07-26T22:33:03.1160524Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-07-26T22:33:03.1160601Z               "line": 10
2026-07-26T22:33:03.1160687Z             },
2026-07-26T22:33:03.1160763Z             {
2026-07-26T22:33:03.1160886Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-07-26T22:33:03.1160983Z               "line": 56
2026-07-26T22:33:03.1161059Z             }
2026-07-26T22:33:03.1161149Z           ]
2026-07-26T22:33:03.1161221Z         },
2026-07-26T22:33:03.1161312Z         "unit": {
2026-07-26T22:33:03.1161402Z           "complete": true,
2026-07-26T22:33:03.1161487Z           "evidence": [
2026-07-26T22:33:03.1161569Z             {
2026-07-26T22:33:03.1161693Z               "path": "crates/spt-msg/src/ready.rs",
2026-07-26T22:33:03.1161783Z               "line": 254
2026-07-26T22:33:03.1161860Z             },
2026-07-26T22:33:03.1162069Z             {
2026-07-26T22:33:03.1162194Z               "path": "crates/spt-msg/src/ready.rs",
2026-07-26T22:33:03.1162285Z               "line": 273
2026-07-26T22:33:03.1162360Z             },
2026-07-26T22:33:03.1162437Z             {
2026-07-26T22:33:03.1162533Z               "path": "crates/spt-msg/src/ready.rs",
2026-07-26T22:33:03.1162623Z               "line": 296
2026-07-26T22:33:03.1162698Z             }
2026-07-26T22:33:03.1162773Z           ]
2026-07-26T22:33:03.1162855Z         }
2026-07-26T22:33:03.1162931Z       }
2026-07-26T22:33:03.1163010Z     },
2026-07-26T22:33:03.1163090Z     {
2026-07-26T22:33:03.1163177Z       "id": "REQ-MSG-4",
2026-07-26T22:33:03.1164021Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-07-26T22:33:03.1164207Z       "requiredStages": [
2026-07-26T22:33:03.1164303Z         "impl",
2026-07-26T22:33:03.1164383Z         "unit",
2026-07-26T22:33:03.1164466Z         "int"
2026-07-26T22:33:03.1164546Z       ],
2026-07-26T22:33:03.1164627Z       "stages": {
2026-07-26T22:33:03.1164712Z         "doc": {
2026-07-26T22:33:03.1164809Z           "complete": false,
2026-07-26T22:33:03.1164903Z           "evidence": []
2026-07-26T22:33:03.1164984Z         },
2026-07-26T22:33:03.1165066Z         "impl": {
2026-07-26T22:33:03.1165157Z           "complete": true,
2026-07-26T22:33:03.1165237Z           "evidence": [
2026-07-26T22:33:03.1165318Z             {
2026-07-26T22:33:03.1165425Z               "path": "crates/spt-msg/src/emit.rs",
2026-07-26T22:33:03.1165514Z               "line": 19
2026-07-26T22:33:03.1165589Z             },
2026-07-26T22:33:03.1165669Z             {
2026-07-26T22:33:03.1165770Z               "path": "crates/spt-msg/src/emit.rs",
2026-07-26T22:33:03.1165861Z               "line": 46
2026-07-26T22:33:03.1165946Z             },
2026-07-26T22:33:03.1166032Z             {
2026-07-26T22:33:03.1166147Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.1166242Z               "line": 941
2026-07-26T22:33:03.1166313Z             },
2026-07-26T22:33:03.1166390Z             {
2026-07-26T22:33:03.1166490Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1166576Z               "line": 7282
2026-07-26T22:33:03.1166652Z             }
2026-07-26T22:33:03.1166739Z           ]
2026-07-26T22:33:03.1166814Z         },
2026-07-26T22:33:03.1166905Z         "int": {
2026-07-26T22:33:03.1166991Z           "complete": true,
2026-07-26T22:33:03.1167082Z           "evidence": [
2026-07-26T22:33:03.1167167Z             {
2026-07-26T22:33:03.1167277Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-07-26T22:33:03.1167359Z               "line": 98
2026-07-26T22:33:03.1167449Z             },
2026-07-26T22:33:03.1167530Z             {
2026-07-26T22:33:03.1167655Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-07-26T22:33:03.1167758Z               "line": 128
2026-07-26T22:33:03.1167838Z             }
2026-07-26T22:33:03.1167928Z           ]
2026-07-26T22:33:03.1168010Z         },
2026-07-26T22:33:03.1168095Z         "unit": {
2026-07-26T22:33:03.1168184Z           "complete": true,
2026-07-26T22:33:03.1168265Z           "evidence": [
2026-07-26T22:33:03.1168342Z             {
2026-07-26T22:33:03.1168456Z               "path": "crates/spt-msg/src/emit.rs",
2026-07-26T22:33:03.1168546Z               "line": 68
2026-07-26T22:33:03.1168623Z             },
2026-07-26T22:33:03.1168704Z             {
2026-07-26T22:33:03.1168804Z               "path": "crates/spt-msg/src/emit.rs",
2026-07-26T22:33:03.1168889Z               "line": 79
2026-07-26T22:33:03.1169086Z             },
2026-07-26T22:33:03.1169209Z             {
2026-07-26T22:33:03.1169315Z               "path": "crates/spt-msg/src/emit.rs",
2026-07-26T22:33:03.1169405Z               "line": 90
2026-07-26T22:33:03.1169485Z             },
2026-07-26T22:33:03.1169667Z             {
2026-07-26T22:33:03.1169767Z               "path": "crates/spt-msg/src/emit.rs",
2026-07-26T22:33:03.1169848Z               "line": 151
2026-07-26T22:33:03.1169930Z             }
2026-07-26T22:33:03.1170010Z           ]
2026-07-26T22:33:03.1170091Z         }
2026-07-26T22:33:03.1170168Z       }
2026-07-26T22:33:03.1170255Z     },
2026-07-26T22:33:03.1170334Z     {
2026-07-26T22:33:03.1170435Z       "id": "REQ-MSG-5",
2026-07-26T22:33:03.1171132Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-07-26T22:33:03.1171224Z       "requiredStages": [
2026-07-26T22:33:03.1171300Z         "doc",
2026-07-26T22:33:03.1171485Z         "impl",
2026-07-26T22:33:03.1171567Z         "unit"
2026-07-26T22:33:03.1171643Z       ],
2026-07-26T22:33:03.1171742Z       "stages": {
2026-07-26T22:33:03.1171825Z         "doc": {
2026-07-26T22:33:03.1171924Z           "complete": true,
2026-07-26T22:33:03.1172023Z           "evidence": [
2026-07-26T22:33:03.1172134Z             {
2026-07-26T22:33:03.1172238Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.1172324Z               "line": 261
2026-07-26T22:33:03.1172395Z             }
2026-07-26T22:33:03.1172483Z           ]
2026-07-26T22:33:03.1172553Z         },
2026-07-26T22:33:03.1172639Z         "impl": {
2026-07-26T22:33:03.1172720Z           "complete": true,
2026-07-26T22:33:03.1172845Z           "evidence": [
2026-07-26T22:33:03.1172934Z             {
2026-07-26T22:33:03.1173074Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:03.1173160Z               "line": 63
2026-07-26T22:33:03.1173244Z             },
2026-07-26T22:33:03.1173338Z             {
2026-07-26T22:33:03.1173463Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:03.1173551Z               "line": 135
2026-07-26T22:33:03.1173637Z             },
2026-07-26T22:33:03.1173713Z             {
2026-07-26T22:33:03.1173824Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:03.1173904Z               "line": 144
2026-07-26T22:33:03.1173989Z             },
2026-07-26T22:33:03.1174067Z             {
2026-07-26T22:33:03.1174172Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:03.1174252Z               "line": 158
2026-07-26T22:33:03.1174328Z             },
2026-07-26T22:33:03.1174410Z             {
2026-07-26T22:33:03.1174519Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:03.1174614Z               "line": 187
2026-07-26T22:33:03.1174692Z             },
2026-07-26T22:33:03.1174772Z             {
2026-07-26T22:33:03.1174881Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1174982Z               "line": 6867
2026-07-26T22:33:03.1175054Z             }
2026-07-26T22:33:03.1175139Z           ]
2026-07-26T22:33:03.1175220Z         },
2026-07-26T22:33:03.1175302Z         "int": {
2026-07-26T22:33:03.1175397Z           "complete": true,
2026-07-26T22:33:03.1175477Z           "evidence": [
2026-07-26T22:33:03.1175559Z             {
2026-07-26T22:33:03.1175679Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-07-26T22:33:03.1175773Z               "line": 19
2026-07-26T22:33:03.1175850Z             }
2026-07-26T22:33:03.1175932Z           ]
2026-07-26T22:33:03.1176013Z         },
2026-07-26T22:33:03.1176092Z         "unit": {
2026-07-26T22:33:03.1176173Z           "complete": true,
2026-07-26T22:33:03.1176263Z           "evidence": [
2026-07-26T22:33:03.1176350Z             {
2026-07-26T22:33:03.1176469Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:03.1176549Z               "line": 380
2026-07-26T22:33:03.1176626Z             },
2026-07-26T22:33:03.1176712Z             {
2026-07-26T22:33:03.1176830Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-07-26T22:33:03.1176927Z               "line": 155
2026-07-26T22:33:03.1177084Z             },
2026-07-26T22:33:03.1177169Z             {
2026-07-26T22:33:03.1177270Z               "path": "crates/spt-msg/src/emit.rs",
2026-07-26T22:33:03.1177370Z               "line": 122
2026-07-26T22:33:03.1177441Z             },
2026-07-26T22:33:03.1177527Z             {
2026-07-26T22:33:03.1177642Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:03.1177732Z               "line": 461
2026-07-26T22:33:03.1177817Z             },
2026-07-26T22:33:03.1177905Z             {
2026-07-26T22:33:03.1178009Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:03.1178104Z               "line": 510
2026-07-26T22:33:03.1178181Z             },
2026-07-26T22:33:03.1178272Z             {
2026-07-26T22:33:03.1178380Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:03.1178542Z               "line": 526
2026-07-26T22:33:03.1178617Z             },
2026-07-26T22:33:03.1178697Z             {
2026-07-26T22:33:03.1178815Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:03.1178902Z               "line": 545
2026-07-26T22:33:03.1179049Z             },
2026-07-26T22:33:03.1179135Z             {
2026-07-26T22:33:03.1179241Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1179336Z               "line": 15066
2026-07-26T22:33:03.1179421Z             }
2026-07-26T22:33:03.1179498Z           ]
2026-07-26T22:33:03.1179584Z         }
2026-07-26T22:33:03.1179664Z       }
2026-07-26T22:33:03.1179740Z     },
2026-07-26T22:33:03.1179818Z     {
2026-07-26T22:33:03.1179904Z       "id": "REQ-MSG-6",
2026-07-26T22:33:03.1181475Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-07-26T22:33:03.1181578Z       "requiredStages": [
2026-07-26T22:33:03.1181659Z         "doc",
2026-07-26T22:33:03.1181745Z         "impl",
2026-07-26T22:33:03.1181822Z         "unit"
2026-07-26T22:33:03.1181902Z       ],
2026-07-26T22:33:03.1181988Z       "stages": {
2026-07-26T22:33:03.1182065Z         "doc": {
2026-07-26T22:33:03.1182160Z           "complete": true,
2026-07-26T22:33:03.1182250Z           "evidence": [
2026-07-26T22:33:03.1182326Z             {
2026-07-26T22:33:03.1182428Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.1182509Z               "line": 264
2026-07-26T22:33:03.1182593Z             }
2026-07-26T22:33:03.1182680Z           ]
2026-07-26T22:33:03.1182766Z         },
2026-07-26T22:33:03.1182852Z         "impl": {
2026-07-26T22:33:03.1182947Z           "complete": true,
2026-07-26T22:33:03.1183024Z           "evidence": [
2026-07-26T22:33:03.1183109Z             {
2026-07-26T22:33:03.1183242Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.1183334Z               "line": 198
2026-07-26T22:33:03.1183410Z             },
2026-07-26T22:33:03.1183489Z             {
2026-07-26T22:33:03.1183615Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.1183706Z               "line": 541
2026-07-26T22:33:03.1183790Z             },
2026-07-26T22:33:03.1183871Z             {
2026-07-26T22:33:03.1183985Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.1184070Z               "line": 609
2026-07-26T22:33:03.1184154Z             },
2026-07-26T22:33:03.1184234Z             {
2026-07-26T22:33:03.1184336Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:03.1184431Z               "line": 92
2026-07-26T22:33:03.1184507Z             },
2026-07-26T22:33:03.1184593Z             {
2026-07-26T22:33:03.1184712Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.1184922Z               "line": 155
2026-07-26T22:33:03.1185013Z             }
2026-07-26T22:33:03.1185084Z           ]
2026-07-26T22:33:03.1185170Z         },
2026-07-26T22:33:03.1185247Z         "int": {
2026-07-26T22:33:03.1185337Z           "complete": false,
2026-07-26T22:33:03.1185427Z           "evidence": []
2026-07-26T22:33:03.1185508Z         },
2026-07-26T22:33:03.1185591Z         "unit": {
2026-07-26T22:33:03.1185685Z           "complete": true,
2026-07-26T22:33:03.1185766Z           "evidence": [
2026-07-26T22:33:03.1185847Z             {
2026-07-26T22:33:03.1185967Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.1186066Z               "line": 2503
2026-07-26T22:33:03.1186133Z             },
2026-07-26T22:33:03.1186225Z             {
2026-07-26T22:33:03.1186429Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:03.1186511Z               "line": 407
2026-07-26T22:33:03.1186592Z             }
2026-07-26T22:33:03.1186685Z           ]
2026-07-26T22:33:03.1186765Z         }
2026-07-26T22:33:03.1186852Z       }
2026-07-26T22:33:03.1186929Z     },
2026-07-26T22:33:03.1187014Z     {
2026-07-26T22:33:03.1187119Z       "id": "REQ-MSG-CLI-ORIGIN",
2026-07-26T22:33:03.1189073Z       "title": "A bare non-perch CLI `spt send` (no owning perch to name as origin) stamps from = `cli@<node-label>` at compose time (bare `cli` when no node label is known — never a dangling `cli@`), and WAN ingress renders an EMPTY from as the origin node DISPLAY (`node_label_display(origin_node, None)` = the QUIC-proven origin node's key-prefix; never blank) — a delivered message NEVER shows a blank sender. Scoped to `spt send`: a from-less send is LEGAL (stamped, never refused), while `spt ring` keeps its NO_SELF refusal (a ring needs a routable self for the reply leg; `cli@<node>` is a display origin, not a perch address). (F-024C item 3, doyle ruled)",
2026-07-26T22:33:03.1189281Z       "requiredStages": [
2026-07-26T22:33:03.1189380Z         "impl",
2026-07-26T22:33:03.1189467Z         "unit"
2026-07-26T22:33:03.1189548Z       ],
2026-07-26T22:33:03.1189628Z       "stages": {
2026-07-26T22:33:03.1189709Z         "doc": {
2026-07-26T22:33:03.1189806Z           "complete": false,
2026-07-26T22:33:03.1189896Z           "evidence": []
2026-07-26T22:33:03.1189971Z         },
2026-07-26T22:33:03.1190049Z         "impl": {
2026-07-26T22:33:03.1190144Z           "complete": true,
2026-07-26T22:33:03.1190234Z           "evidence": [
2026-07-26T22:33:03.1190320Z             {
2026-07-26T22:33:03.1190430Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:03.1190521Z               "line": 241
2026-07-26T22:33:03.1190591Z             },
2026-07-26T22:33:03.1190668Z             {
2026-07-26T22:33:03.1190773Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:03.1190859Z               "line": 295
2026-07-26T22:33:03.1190944Z             },
2026-07-26T22:33:03.1191022Z             {
2026-07-26T22:33:03.1191121Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1191207Z               "line": 6932
2026-07-26T22:33:03.1191293Z             }
2026-07-26T22:33:03.1191379Z           ]
2026-07-26T22:33:03.1191483Z         },
2026-07-26T22:33:03.1191599Z         "int": {
2026-07-26T22:33:03.1191685Z           "complete": false,
2026-07-26T22:33:03.1191774Z           "evidence": []
2026-07-26T22:33:03.1191849Z         },
2026-07-26T22:33:03.1191940Z         "unit": {
2026-07-26T22:33:03.1192031Z           "complete": true,
2026-07-26T22:33:03.1192110Z           "evidence": [
2026-07-26T22:33:03.1192190Z             {
2026-07-26T22:33:03.1192300Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:03.1192382Z               "line": 335
2026-07-26T22:33:03.1192463Z             },
2026-07-26T22:33:03.1192548Z             {
2026-07-26T22:33:03.1192654Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1192740Z               "line": 13343
2026-07-26T22:33:03.1192935Z             }
2026-07-26T22:33:03.1193021Z           ]
2026-07-26T22:33:03.1193106Z         }
2026-07-26T22:33:03.1193182Z       }
2026-07-26T22:33:03.1193269Z     },
2026-07-26T22:33:03.1193354Z     {
2026-07-26T22:33:03.1193458Z       "id": "REQ-MSG-DELIVERY-AXES",
2026-07-26T22:33:03.1200104Z       "title": "Activity-gated inbound delivery + per-message send control as THREE ORTHOGONAL AXES plus opaque metadata (ADR-0028; grilled w/ operator 2026-06-23). SUBSTRATE (the legacy-SPT parity gap, scaffolded-but-unwired today: `delivery::is_idle` + `resolve_inject_methods` exist but the result is discarded `let _methods`, and `broker::dispatch_endpoint_input` injects unconditionally — its comment calls activity-gating 'a deferred follow wave'): an inbound message has an ACTIVE window (endpoint active → spool for the receiver's hook-poll, non-disruptive) and an IDLE window (idle/idle-transition → deliver immediately: translation binary spt-hosted → relay-poll either topology → spool, in fallback order). AXES (each composes; each defaults to its unrestricted value): (1) DELIVERY WINDOW — default (both, first-to-fire) | `--idle-only` (idle window; immediate if already idle) | `--active-only` (active window only, never wakes; the RENAMED `--deferred` — `deferred=1` spool column + `api poll --include-deferred` keep their names). (2) CHANNEL RESTRICTION — unrestricted | `--prefer-native` (translation binary if running else fall back) | `--force-native` (binary ONLY, no fallback/no spool-to-other-method). Native flags do NOT respect the binary's idle-gating: the WINDOW says when, the native flag says through-what (so `--force-native --active-only` = binary injects during the active window, mid-turn-safe via the existing InjectFloor). (3) PERSISTENCE — durable (default; spool until delivered or TTL) | `--ephemeral` (drop if undeliverable in the accepted window — at window-open with no live carrier, or at TTL, whichever first). METADATA (orthogonal): `--json-payload '<json>'` → a single attr-escaped `json=\"…\"` envelope attr ALONGSIDE (not replacing) the body, pure verbatim passthrough across spool/TCP/WAN/EVENT-PART, parsed only by the receiving adapter; collision-proof by construction (structured data lives INSIDE the one `json` value, can never forge `from`/`type`); available to ANY sender (confers no spt-core authority). HAZARD: `--ephemeral` is the ONLY path permitted to drop silently — the sender-opted-in carve-out to REQ-HAZARD-IDLE-SILENT-NONDELIVERY (that hazard gains a '…unless --ephemeral' clause in v0.15.0). (v0.15.0)",
2026-07-26T22:33:03.1200347Z       "requiredStages": [
2026-07-26T22:33:03.1200432Z         "doc",
2026-07-26T22:33:03.1200513Z         "impl",
2026-07-26T22:33:03.1200599Z         "unit",
2026-07-26T22:33:03.1200685Z         "int"
2026-07-26T22:33:03.1200766Z       ],
2026-07-26T22:33:03.1200851Z       "stages": {
2026-07-26T22:33:03.1200948Z         "doc": {
2026-07-26T22:33:03.1201043Z           "complete": true,
2026-07-26T22:33:03.1201128Z           "evidence": [
2026-07-26T22:33:03.1201224Z             {
2026-07-26T22:33:03.1201433Z               "path": "docs/adr/0028-activity-gated-delivery-and-send-modifier-axes.md",
2026-07-26T22:33:03.1201524Z               "line": 3
2026-07-26T22:33:03.1201601Z             }
2026-07-26T22:33:03.1201681Z           ]
2026-07-26T22:33:03.1201763Z         },
2026-07-26T22:33:03.1201839Z         "impl": {
2026-07-26T22:33:03.1201935Z           "complete": true,
2026-07-26T22:33:03.1202029Z           "evidence": [
2026-07-26T22:33:03.1202110Z             {
2026-07-26T22:33:03.1202236Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.1202325Z               "line": 1769
2026-07-26T22:33:03.1202405Z             },
2026-07-26T22:33:03.1202486Z             {
2026-07-26T22:33:03.1202609Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.1202694Z               "line": 3326
2026-07-26T22:33:03.1202774Z             },
2026-07-26T22:33:03.1202856Z             {
2026-07-26T22:33:03.1202980Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.1203166Z               "line": 3551
2026-07-26T22:33:03.1203248Z             },
2026-07-26T22:33:03.1203333Z             {
2026-07-26T22:33:03.1203451Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.1203543Z               "line": 3565
2026-07-26T22:33:03.1203629Z             },
2026-07-26T22:33:03.1203708Z             {
2026-07-26T22:33:03.1203829Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.1203967Z               "line": 5180
2026-07-26T22:33:03.1204057Z             },
2026-07-26T22:33:03.1204144Z             {
2026-07-26T22:33:03.1204262Z               "path": "crates/spt-msg/src/deliver.rs",
2026-07-26T22:33:03.1204357Z               "line": 199
2026-07-26T22:33:03.1204430Z             },
2026-07-26T22:33:03.1204511Z             {
2026-07-26T22:33:03.1204696Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.1204793Z               "line": 339
2026-07-26T22:33:03.1204869Z             },
2026-07-26T22:33:03.1204957Z             {
2026-07-26T22:33:03.1205067Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.1205158Z               "line": 559
2026-07-26T22:33:03.1205237Z             },
2026-07-26T22:33:03.1205317Z             {
2026-07-26T22:33:03.1205422Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.1205524Z               "line": 799
2026-07-26T22:33:03.1205603Z             },
2026-07-26T22:33:03.1205679Z             {
2026-07-26T22:33:03.1205795Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.1205885Z               "line": 36
2026-07-26T22:33:03.1205961Z             },
2026-07-26T22:33:03.1206038Z             {
2026-07-26T22:33:03.1206152Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.1206247Z               "line": 196
2026-07-26T22:33:03.1206333Z             },
2026-07-26T22:33:03.1206415Z             {
2026-07-26T22:33:03.1206529Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.1206629Z               "line": 278
2026-07-26T22:33:03.1206716Z             },
2026-07-26T22:33:03.1206791Z             {
2026-07-26T22:33:03.1206900Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.1206992Z               "line": 311
2026-07-26T22:33:03.1207073Z             },
2026-07-26T22:33:03.1207152Z             {
2026-07-26T22:33:03.1207263Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:03.1207360Z               "line": 133
2026-07-26T22:33:03.1207439Z             },
2026-07-26T22:33:03.1207530Z             {
2026-07-26T22:33:03.1207636Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1207731Z               "line": 6894
2026-07-26T22:33:03.1207810Z             },
2026-07-26T22:33:03.1207900Z             {
2026-07-26T22:33:03.1208001Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1208097Z               "line": 6984
2026-07-26T22:33:03.1208187Z             },
2026-07-26T22:33:03.1208268Z             {
2026-07-26T22:33:03.1208373Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1208454Z               "line": 7053
2026-07-26T22:33:03.1208549Z             }
2026-07-26T22:33:03.1208631Z           ]
2026-07-26T22:33:03.1208712Z         },
2026-07-26T22:33:03.1208797Z         "int": {
2026-07-26T22:33:03.1208898Z           "complete": true,
2026-07-26T22:33:03.1209059Z           "evidence": [
2026-07-26T22:33:03.1209135Z             {
2026-07-26T22:33:03.1209285Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.1209384Z               "line": 1677
2026-07-26T22:33:03.1209474Z             },
2026-07-26T22:33:03.1209561Z             {
2026-07-26T22:33:03.1209703Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.1209794Z               "line": 1745
2026-07-26T22:33:03.1209876Z             },
2026-07-26T22:33:03.1209952Z             {
2026-07-26T22:33:03.1210084Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.1210274Z               "line": 2050
2026-07-26T22:33:03.1210353Z             },
2026-07-26T22:33:03.1210438Z             {
2026-07-26T22:33:03.1210577Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.1210664Z               "line": 2099
2026-07-26T22:33:03.1210749Z             }
2026-07-26T22:33:03.1210821Z           ]
2026-07-26T22:33:03.1210902Z         },
2026-07-26T22:33:03.1210987Z         "unit": {
2026-07-26T22:33:03.1211078Z           "complete": true,
2026-07-26T22:33:03.1211159Z           "evidence": [
2026-07-26T22:33:03.1211236Z             {
2026-07-26T22:33:03.1211354Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.1211435Z               "line": 1664
2026-07-26T22:33:03.1211513Z             },
2026-07-26T22:33:03.1211702Z             {
2026-07-26T22:33:03.1211823Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.1211903Z               "line": 1126
2026-07-26T22:33:03.1211988Z             },
2026-07-26T22:33:03.1212069Z             {
2026-07-26T22:33:03.1212194Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.1212289Z               "line": 1159
2026-07-26T22:33:03.1212370Z             },
2026-07-26T22:33:03.1212452Z             {
2026-07-26T22:33:03.1212561Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.1212656Z               "line": 1190
2026-07-26T22:33:03.1212738Z             },
2026-07-26T22:33:03.1212824Z             {
2026-07-26T22:33:03.1212937Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.1213031Z               "line": 563
2026-07-26T22:33:03.1213113Z             },
2026-07-26T22:33:03.1213197Z             {
2026-07-26T22:33:03.1213301Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.1213401Z               "line": 600
2026-07-26T22:33:03.1213479Z             },
2026-07-26T22:33:03.1213564Z             {
2026-07-26T22:33:03.1213678Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.1213769Z               "line": 630
2026-07-26T22:33:03.1213845Z             },
2026-07-26T22:33:03.1213926Z             {
2026-07-26T22:33:03.1214031Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1214127Z               "line": 15123
2026-07-26T22:33:03.1214198Z             }
2026-07-26T22:33:03.1214278Z           ]
2026-07-26T22:33:03.1214360Z         }
2026-07-26T22:33:03.1214451Z       }
2026-07-26T22:33:03.1214527Z     },
2026-07-26T22:33:03.1214607Z     {
2026-07-26T22:33:03.1214709Z       "id": "REQ-MSG-ENVELOPE",
2026-07-26T22:33:03.1218366Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-07-26T22:33:03.1218494Z       "requiredStages": [
2026-07-26T22:33:03.1218586Z         "doc",
2026-07-26T22:33:03.1218667Z         "impl",
2026-07-26T22:33:03.1218833Z         "unit",
2026-07-26T22:33:03.1218914Z         "int"
2026-07-26T22:33:03.1219080Z       ],
2026-07-26T22:33:03.1219172Z       "stages": {
2026-07-26T22:33:03.1219253Z         "doc": {
2026-07-26T22:33:03.1219348Z           "complete": true,
2026-07-26T22:33:03.1219438Z           "evidence": [
2026-07-26T22:33:03.1219511Z             {
2026-07-26T22:33:03.1219734Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-07-26T22:33:03.1219826Z               "line": 47
2026-07-26T22:33:03.1219906Z             }
2026-07-26T22:33:03.1219982Z           ]
2026-07-26T22:33:03.1220068Z         },
2026-07-26T22:33:03.1220145Z         "impl": {
2026-07-26T22:33:03.1220244Z           "complete": true,
2026-07-26T22:33:03.1220339Z           "evidence": [
2026-07-26T22:33:03.1220512Z             {
2026-07-26T22:33:03.1220625Z               "path": "crates/spt-msg/src/emit.rs",
2026-07-26T22:33:03.1220710Z               "line": 20
2026-07-26T22:33:03.1220811Z             },
2026-07-26T22:33:03.1220899Z             {
2026-07-26T22:33:03.1221003Z               "path": "crates/spt-msg/src/emit.rs",
2026-07-26T22:33:03.1221104Z               "line": 33
2026-07-26T22:33:03.1221186Z             },
2026-07-26T22:33:03.1221271Z             {
2026-07-26T22:33:03.1221366Z               "path": "crates/spt-msg/src/emit.rs",
2026-07-26T22:33:03.1221462Z               "line": 47
2026-07-26T22:33:03.1221585Z             },
2026-07-26T22:33:03.1221666Z             {
2026-07-26T22:33:03.1221763Z               "path": "crates/spt-msg/src/emit.rs",
2026-07-26T22:33:03.1221877Z               "line": 58
2026-07-26T22:33:03.1221976Z             },
2026-07-26T22:33:03.1222063Z             {
2026-07-26T22:33:03.1222158Z               "path": "crates/spt-msg/src/wire.rs",
2026-07-26T22:33:03.1222243Z               "line": 14
2026-07-26T22:33:03.1222339Z             },
2026-07-26T22:33:03.1222421Z             {
2026-07-26T22:33:03.1222539Z               "path": "crates/spt-msg/src/wire.rs",
2026-07-26T22:33:03.1222620Z               "line": 27
2026-07-26T22:33:03.1222703Z             },
2026-07-26T22:33:03.1222782Z             {
2026-07-26T22:33:03.1222892Z               "path": "crates/spt-msg/src/wire.rs",
2026-07-26T22:33:03.1222974Z               "line": 40
2026-07-26T22:33:03.1223055Z             },
2026-07-26T22:33:03.1223139Z             {
2026-07-26T22:33:03.1223259Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.1223337Z               "line": 202
2026-07-26T22:33:03.1223417Z             },
2026-07-26T22:33:03.1223502Z             {
2026-07-26T22:33:03.1223616Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.1223697Z               "line": 195
2026-07-26T22:33:03.1223781Z             },
2026-07-26T22:33:03.1223866Z             {
2026-07-26T22:33:03.1223991Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.1224072Z               "line": 328
2026-07-26T22:33:03.1224152Z             },
2026-07-26T22:33:03.1224233Z             {
2026-07-26T22:33:03.1224358Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.1224443Z               "line": 942
2026-07-26T22:33:03.1224538Z             },
2026-07-26T22:33:03.1224616Z             {
2026-07-26T22:33:03.1224739Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:03.1224829Z               "line": 124
2026-07-26T22:33:03.1224915Z             },
2026-07-26T22:33:03.1224997Z             {
2026-07-26T22:33:03.1225101Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1225177Z               "line": 7283
2026-07-26T22:33:03.1225260Z             }
2026-07-26T22:33:03.1225345Z           ]
2026-07-26T22:33:03.1225425Z         },
2026-07-26T22:33:03.1225501Z         "int": {
2026-07-26T22:33:03.1225603Z           "complete": true,
2026-07-26T22:33:03.1225688Z           "evidence": [
2026-07-26T22:33:03.1225774Z             {
2026-07-26T22:33:03.1225894Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-07-26T22:33:03.1226082Z               "line": 15
2026-07-26T22:33:03.1226163Z             }
2026-07-26T22:33:03.1226254Z           ]
2026-07-26T22:33:03.1226329Z         },
2026-07-26T22:33:03.1226413Z         "unit": {
2026-07-26T22:33:03.1226504Z           "complete": true,
2026-07-26T22:33:03.1226591Z           "evidence": [
2026-07-26T22:33:03.1226667Z             {
2026-07-26T22:33:03.1226771Z               "path": "crates/spt-msg/src/emit.rs",
2026-07-26T22:33:03.1226863Z               "line": 102
2026-07-26T22:33:03.1226939Z             },
2026-07-26T22:33:03.1227015Z             {
2026-07-26T22:33:03.1227119Z               "path": "crates/spt-msg/src/emit.rs",
2026-07-26T22:33:03.1227211Z               "line": 137
2026-07-26T22:33:03.1227296Z             },
2026-07-26T22:33:03.1227386Z             {
2026-07-26T22:33:03.1227559Z               "path": "crates/spt-msg/src/wire.rs",
2026-07-26T22:33:03.1227644Z               "line": 98
2026-07-26T22:33:03.1227734Z             },
2026-07-26T22:33:03.1227845Z             {
2026-07-26T22:33:03.1227954Z               "path": "crates/spt-msg/src/wire.rs",
2026-07-26T22:33:03.1228049Z               "line": 106
2026-07-26T22:33:03.1228132Z             },
2026-07-26T22:33:03.1228221Z             {
2026-07-26T22:33:03.1228326Z               "path": "crates/spt-msg/src/wire.rs",
2026-07-26T22:33:03.1228417Z               "line": 113
2026-07-26T22:33:03.1228489Z             },
2026-07-26T22:33:03.1228578Z             {
2026-07-26T22:33:03.1228678Z               "path": "crates/spt-msg/src/wire.rs",
2026-07-26T22:33:03.1228771Z               "line": 122
2026-07-26T22:33:03.1228851Z             }
2026-07-26T22:33:03.1229030Z           ]
2026-07-26T22:33:03.1229102Z         }
2026-07-26T22:33:03.1229204Z       }
2026-07-26T22:33:03.1229297Z     },
2026-07-26T22:33:03.1229373Z     {
2026-07-26T22:33:03.1229484Z       "id": "REQ-MSG-IDLE-EDGE-DRAIN",
2026-07-26T22:33:03.1231888Z       "title": "On an endpoint's ACTIVE→IDLE transition the daemon DRAINS its pending spool (deferred AND non-deferred) through the same shared spt-hosted inject leg — closing the SECOND F-023 gap: no idle-edge drain exists anywhere, so an spt-hosted endpoint (which has no api-listen relay to wake it) strands BOTH message classes ('ACTIVE → spool deferred for hook-poll' and 'IDLE+no-binary → non-deferred for a relay that does not exist'). FIX: on the state ACTIVE→IDLE edge, offer the pending spool through the shared inject leg; REUSE the hook-poll drain's take/ack machinery so a concurrent `api poll` cannot double-deliver — ONE drain path, TWO triggers (hook-poll + idle-edge). v0.14.3 LAW holds on BOTH triggers: translation-binary-ONLY, a no-binary idle drain SPOOLS LOUD, never writes the PTY. (F-023, BUILD-F023-WANIDLE)",
2026-07-26T22:33:03.1231998Z       "requiredStages": [
2026-07-26T22:33:03.1232074Z         "impl",
2026-07-26T22:33:03.1232174Z         "unit",
2026-07-26T22:33:03.1232275Z         "int"
2026-07-26T22:33:03.1232356Z       ],
2026-07-26T22:33:03.1232498Z       "stages": {
2026-07-26T22:33:03.1232585Z         "doc": {
2026-07-26T22:33:03.1232680Z           "complete": false,
2026-07-26T22:33:03.1232775Z           "evidence": []
2026-07-26T22:33:03.1232851Z         },
2026-07-26T22:33:03.1232957Z         "impl": {
2026-07-26T22:33:03.1233061Z           "complete": true,
2026-07-26T22:33:03.1233156Z           "evidence": [
2026-07-26T22:33:03.1233238Z             {
2026-07-26T22:33:03.1233385Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.1233466Z               "line": 627
2026-07-26T22:33:03.1233558Z             },
2026-07-26T22:33:03.1233643Z             {
2026-07-26T22:33:03.1233752Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.1233834Z               "line": 675
2026-07-26T22:33:03.1233926Z             },
2026-07-26T22:33:03.1234010Z             {
2026-07-26T22:33:03.1234132Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.1234224Z               "line": 309
2026-07-26T22:33:03.1234407Z             }
2026-07-26T22:33:03.1234488Z           ]
2026-07-26T22:33:03.1234570Z         },
2026-07-26T22:33:03.1234651Z         "int": {
2026-07-26T22:33:03.1234750Z           "complete": true,
2026-07-26T22:33:03.1234841Z           "evidence": [
2026-07-26T22:33:03.1234928Z             {
2026-07-26T22:33:03.1235060Z               "path": "crates/spt/tests/idle_edge_drain_e2e.rs",
2026-07-26T22:33:03.1235156Z               "line": 87
2026-07-26T22:33:03.1235233Z             },
2026-07-26T22:33:03.1235314Z             {
2026-07-26T22:33:03.1235427Z               "path": "docs/F-035-CONFLICT.md",
2026-07-26T22:33:03.1235505Z               "line": 15
2026-07-26T22:33:03.1235594Z             }
2026-07-26T22:33:03.1235675Z           ]
2026-07-26T22:33:03.1235756Z         },
2026-07-26T22:33:03.1235834Z         "unit": {
2026-07-26T22:33:03.1236028Z           "complete": true,
2026-07-26T22:33:03.1236105Z           "evidence": [
2026-07-26T22:33:03.1236186Z             {
2026-07-26T22:33:03.1236300Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.1236401Z               "line": 1231
2026-07-26T22:33:03.1236487Z             },
2026-07-26T22:33:03.1236572Z             {
2026-07-26T22:33:03.1236685Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.1236776Z               "line": 1271
2026-07-26T22:33:03.1236852Z             },
2026-07-26T22:33:03.1236941Z             {
2026-07-26T22:33:03.1237050Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.1237146Z               "line": 1307
2026-07-26T22:33:03.1237223Z             }
2026-07-26T22:33:03.1237307Z           ]
2026-07-26T22:33:03.1237388Z         }
2026-07-26T22:33:03.1237471Z       }
2026-07-26T22:33:03.1240888Z     },
2026-07-26T22:33:03.1241083Z     {
2026-07-26T22:33:03.1241217Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-07-26T22:33:03.1247581Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. AMENDED v0.14.3 (ADR-0022 amendment, raw-inject removal): idle delivery is translation-binary-ONLY — the v0.11.0 raw `{text:payload}{key:enter}` inject is NO LONGER a delivery path; with no working binary (absent/spawn-failed/faulted/worker-gone) the inbound SPOOLS (delivered=false, poll-fed, LOUD), never a raw PTY pseudo-write (which did not submit on a modern TUI — the silent degrade that masked F-019). See REQ-HAZARD-IDLE-SILENT-NONDELIVERY. (v0.13.0, amended v0.14.3)",
2026-07-26T22:33:03.1247730Z       "requiredStages": [
2026-07-26T22:33:03.1247963Z         "doc",
2026-07-26T22:33:03.1248055Z         "impl",
2026-07-26T22:33:03.1248144Z         "unit",
2026-07-26T22:33:03.1248230Z         "int"
2026-07-26T22:33:03.1248317Z       ],
2026-07-26T22:33:03.1248398Z       "stages": {
2026-07-26T22:33:03.1248487Z         "doc": {
2026-07-26T22:33:03.1248583Z           "complete": true,
2026-07-26T22:33:03.1248674Z           "evidence": [
2026-07-26T22:33:03.1248755Z             {
2026-07-26T22:33:03.1248903Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-07-26T22:33:03.1249065Z               "line": 336
2026-07-26T22:33:03.1249151Z             },
2026-07-26T22:33:03.1249232Z             {
2026-07-26T22:33:03.1249351Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.1249432Z               "line": 341
2026-07-26T22:33:03.1249513Z             }
2026-07-26T22:33:03.1249708Z           ]
2026-07-26T22:33:03.1249790Z         },
2026-07-26T22:33:03.1249876Z         "impl": {
2026-07-26T22:33:03.1249976Z           "complete": true,
2026-07-26T22:33:03.1250065Z           "evidence": [
2026-07-26T22:33:03.1250150Z             {
2026-07-26T22:33:03.1250271Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.1250356Z               "line": 3006
2026-07-26T22:33:03.1250436Z             },
2026-07-26T22:33:03.1250523Z             {
2026-07-26T22:33:03.1250642Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.1250737Z               "line": 3324
2026-07-26T22:33:03.1250813Z             },
2026-07-26T22:33:03.1250895Z             {
2026-07-26T22:33:03.1251014Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.1251094Z               "line": 5130
2026-07-26T22:33:03.1251182Z             },
2026-07-26T22:33:03.1251262Z             {
2026-07-26T22:33:03.1251381Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.1251467Z               "line": 5210
2026-07-26T22:33:03.1251549Z             },
2026-07-26T22:33:03.1251629Z             {
2026-07-26T22:33:03.1251772Z               "path": "crates/spt-daemon/src/translation.rs",
2026-07-26T22:33:03.1251854Z               "line": 23
2026-07-26T22:33:03.1251934Z             },
2026-07-26T22:33:03.1252015Z             {
2026-07-26T22:33:03.1252140Z               "path": "crates/spt-daemon/src/translation.rs",
2026-07-26T22:33:03.1252226Z               "line": 92
2026-07-26T22:33:03.1252305Z             },
2026-07-26T22:33:03.1252390Z             {
2026-07-26T22:33:03.1252520Z               "path": "crates/spt-daemon/src/translation.rs",
2026-07-26T22:33:03.1252613Z               "line": 242
2026-07-26T22:33:03.1252693Z             },
2026-07-26T22:33:03.1252780Z             {
2026-07-26T22:33:03.1252900Z               "path": "crates/spt-daemon/src/translation.rs",
2026-07-26T22:33:03.1252979Z               "line": 308
2026-07-26T22:33:03.1253065Z             },
2026-07-26T22:33:03.1253148Z             {
2026-07-26T22:33:03.1253266Z               "path": "crates/spt-daemon/src/translation.rs",
2026-07-26T22:33:03.1253365Z               "line": 332
2026-07-26T22:33:03.1253453Z             },
2026-07-26T22:33:03.1253538Z             {
2026-07-26T22:33:03.1253661Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.1253743Z               "line": 60
2026-07-26T22:33:03.1253824Z             },
2026-07-26T22:33:03.1253910Z             {
2026-07-26T22:33:03.1254029Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.1254111Z               "line": 1059
2026-07-26T22:33:03.1254196Z             }
2026-07-26T22:33:03.1254281Z           ]
2026-07-26T22:33:03.1254359Z         },
2026-07-26T22:33:03.1254445Z         "int": {
2026-07-26T22:33:03.1254534Z           "complete": true,
2026-07-26T22:33:03.1254625Z           "evidence": [
2026-07-26T22:33:03.1254707Z             {
2026-07-26T22:33:03.1254829Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-07-26T22:33:03.1254930Z               "line": 197
2026-07-26T22:33:03.1255007Z             },
2026-07-26T22:33:03.1255191Z             {
2026-07-26T22:33:03.1255353Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.1255447Z               "line": 1345
2026-07-26T22:33:03.1255523Z             },
2026-07-26T22:33:03.1255608Z             {
2026-07-26T22:33:03.1255757Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.1255837Z               "line": 1492
2026-07-26T22:33:03.1255932Z             },
2026-07-26T22:33:03.1256015Z             {
2026-07-26T22:33:03.1256151Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.1256242Z               "line": 1568
2026-07-26T22:33:03.1256330Z             },
2026-07-26T22:33:03.1256400Z             {
2026-07-26T22:33:03.1256538Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.1256691Z               "line": 1661
2026-07-26T22:33:03.1256777Z             }
2026-07-26T22:33:03.1256858Z           ]
2026-07-26T22:33:03.1256950Z         },
2026-07-26T22:33:03.1257029Z         "unit": {
2026-07-26T22:33:03.1257129Z           "complete": true,
2026-07-26T22:33:03.1257221Z           "evidence": [
2026-07-26T22:33:03.1257307Z             {
2026-07-26T22:33:03.1257425Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.1257521Z               "line": 544
2026-07-26T22:33:03.1257603Z             },
2026-07-26T22:33:03.1257673Z             {
2026-07-26T22:33:03.1257786Z               "path": "crates/spt-daemon/src/translation.rs",
2026-07-26T22:33:03.1257886Z               "line": 371
2026-07-26T22:33:03.1257972Z             },
2026-07-26T22:33:03.1258061Z             {
2026-07-26T22:33:03.1258180Z               "path": "crates/spt-daemon/src/translation.rs",
2026-07-26T22:33:03.1258271Z               "line": 425
2026-07-26T22:33:03.1258347Z             },
2026-07-26T22:33:03.1258442Z             {
2026-07-26T22:33:03.1258558Z               "path": "crates/spt-daemon/src/translation.rs",
2026-07-26T22:33:03.1258643Z               "line": 455
2026-07-26T22:33:03.1258728Z             },
2026-07-26T22:33:03.1258809Z             {
2026-07-26T22:33:03.1258924Z               "path": "crates/spt-daemon/src/translation.rs",
2026-07-26T22:33:03.1259095Z               "line": 484
2026-07-26T22:33:03.1259182Z             },
2026-07-26T22:33:03.1259263Z             {
2026-07-26T22:33:03.1259391Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.1259472Z               "line": 1525
2026-07-26T22:33:03.1259554Z             }
2026-07-26T22:33:03.1259635Z           ]
2026-07-26T22:33:03.1259720Z         }
2026-07-26T22:33:03.1259802Z       }
2026-07-26T22:33:03.1259892Z     },
2026-07-26T22:33:03.1259963Z     {
2026-07-26T22:33:03.1260078Z       "id": "REQ-MSG-SELF-DETECT-ANCESTRY",
2026-07-26T22:33:03.1263363Z       "title": "#9 (F026, operator field bug): a perch-owned `spt send` from an endpoint's OWN session must self-identify, not mis-stamp `cli@<node>` (whose replies bounce NO_PERCH). ROOT: roster::detect_self_id (roster.rs) was ENV-ONLY — OWL_SESSION_ID matched to info.session_id, else SPT_AGENT_ID — but an agent-session Bash child often carries NEITHER (the env export is spawn-path-dependent), so a perch-owned sender was classified bare-CLI and REQ-MSG-CLI-ORIGIN stamped it cli@<node> (the stamp works as designed on a wrong premise; that REQ's evidence stays intact). FIX: detect_self_id gains leg (c) PID-ANCESTRY fallback AFTER the env legs — walk THIS process's ancestry, match a live non-corrupt roster perch's recorded harness pid (info.json.pid Numeric, alive-gated via is_process_alive, corrupt/BUSY skipped), first match = self. from-LABEL / routing default ONLY, NOT authentication — authenticate() is untouched (pid-ancestry-for-AUTH stays parked per F-024 with its Windows pid-spoof caveats; a display/routing stamp has no such bar). Best-effort: a broken ancestry walk degrades to None → cli-stamp, never errors the send.",
2026-07-26T22:33:03.1263488Z       "requiredStages": [
2026-07-26T22:33:03.1263678Z         "impl",
2026-07-26T22:33:03.1263769Z         "unit",
2026-07-26T22:33:03.1263845Z         "int"
2026-07-26T22:33:03.1263921Z       ],
2026-07-26T22:33:03.1264003Z       "stages": {
2026-07-26T22:33:03.1264093Z         "doc": {
2026-07-26T22:33:03.1264183Z           "complete": false,
2026-07-26T22:33:03.1264280Z           "evidence": []
2026-07-26T22:33:03.1264356Z         },
2026-07-26T22:33:03.1264442Z         "impl": {
2026-07-26T22:33:03.1264536Z           "complete": true,
2026-07-26T22:33:03.1264623Z           "evidence": [
2026-07-26T22:33:03.1264708Z             {
2026-07-26T22:33:03.1264822Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.1264909Z               "line": 322
2026-07-26T22:33:03.1264991Z             },
2026-07-26T22:33:03.1265070Z             {
2026-07-26T22:33:03.1265277Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.1265357Z               "line": 410
2026-07-26T22:33:03.1265443Z             },
2026-07-26T22:33:03.1265529Z             {
2026-07-26T22:33:03.1265649Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:03.1265742Z               "line": 178
2026-07-26T22:33:03.1265836Z             },
2026-07-26T22:33:03.1265908Z             {
2026-07-26T22:33:03.1266017Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:03.1266101Z               "line": 224
2026-07-26T22:33:03.1266193Z             }
2026-07-26T22:33:03.1266270Z           ]
2026-07-26T22:33:03.1266355Z         },
2026-07-26T22:33:03.1266445Z         "int": {
2026-07-26T22:33:03.1266536Z           "complete": true,
2026-07-26T22:33:03.1266617Z           "evidence": [
2026-07-26T22:33:03.1266712Z             {
2026-07-26T22:33:03.1266817Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:03.1266904Z               "line": 310
2026-07-26T22:33:03.1266994Z             },
2026-07-26T22:33:03.1267074Z             {
2026-07-26T22:33:03.1267170Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:03.1267275Z               "line": 337
2026-07-26T22:33:03.1267351Z             }
2026-07-26T22:33:03.1267427Z           ]
2026-07-26T22:33:03.1267514Z         },
2026-07-26T22:33:03.1267599Z         "unit": {
2026-07-26T22:33:03.1267680Z           "complete": true,
2026-07-26T22:33:03.1267771Z           "evidence": [
2026-07-26T22:33:03.1267858Z             {
2026-07-26T22:33:03.1267956Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:03.1268038Z               "line": 278
2026-07-26T22:33:03.1268129Z             }
2026-07-26T22:33:03.1268210Z           ]
2026-07-26T22:33:03.1268299Z         }
2026-07-26T22:33:03.1268384Z       }
2026-07-26T22:33:03.1268466Z     },
2026-07-26T22:33:03.1268546Z     {
2026-07-26T22:33:03.1268630Z       "id": "REQ-NET-1",
2026-07-26T22:33:03.1268802Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-07-26T22:33:03.1268898Z       "requiredStages": [
2026-07-26T22:33:03.1269433Z         "impl",
2026-07-26T22:33:03.1269532Z         "unit",
2026-07-26T22:33:03.1269622Z         "int"
2026-07-26T22:33:03.1269704Z       ],
2026-07-26T22:33:03.1269790Z       "stages": {
2026-07-26T22:33:03.1269880Z         "doc": {
2026-07-26T22:33:03.1269975Z           "complete": false,
2026-07-26T22:33:03.1270062Z           "evidence": []
2026-07-26T22:33:03.1270147Z         },
2026-07-26T22:33:03.1270233Z         "impl": {
2026-07-26T22:33:03.1270333Z           "complete": true,
2026-07-26T22:33:03.1270429Z           "evidence": [
2026-07-26T22:33:03.1270509Z             {
2026-07-26T22:33:03.1270623Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.1270725Z               "line": 55
2026-07-26T22:33:03.1270800Z             },
2026-07-26T22:33:03.1270881Z             {
2026-07-26T22:33:03.1271001Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.1271101Z               "line": 1381
2026-07-26T22:33:03.1271176Z             },
2026-07-26T22:33:03.1271261Z             {
2026-07-26T22:33:03.1271481Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:03.1271575Z               "line": 233
2026-07-26T22:33:03.1271658Z             },
2026-07-26T22:33:03.1271744Z             {
2026-07-26T22:33:03.1271862Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1271943Z               "line": 97
2026-07-26T22:33:03.1272025Z             },
2026-07-26T22:33:03.1272106Z             {
2026-07-26T22:33:03.1272229Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1272321Z               "line": 281
2026-07-26T22:33:03.1272402Z             },
2026-07-26T22:33:03.1272482Z             {
2026-07-26T22:33:03.1272597Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1272673Z               "line": 297
2026-07-26T22:33:03.1272759Z             },
2026-07-26T22:33:03.1272941Z             {
2026-07-26T22:33:03.1273050Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1273145Z               "line": 312
2026-07-26T22:33:03.1273222Z             },
2026-07-26T22:33:03.1273303Z             {
2026-07-26T22:33:03.1273421Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1273506Z               "line": 430
2026-07-26T22:33:03.1273583Z             },
2026-07-26T22:33:03.1273658Z             {
2026-07-26T22:33:03.1273775Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1273856Z               "line": 489
2026-07-26T22:33:03.1273943Z             },
2026-07-26T22:33:03.1274025Z             {
2026-07-26T22:33:03.1274142Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1274229Z               "line": 495
2026-07-26T22:33:03.1274315Z             },
2026-07-26T22:33:03.1274396Z             {
2026-07-26T22:33:03.1274515Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1274611Z               "line": 501
2026-07-26T22:33:03.1274701Z             },
2026-07-26T22:33:03.1274772Z             {
2026-07-26T22:33:03.1274892Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1274982Z               "line": 517
2026-07-26T22:33:03.1275058Z             },
2026-07-26T22:33:03.1275139Z             {
2026-07-26T22:33:03.1275259Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1275345Z               "line": 537
2026-07-26T22:33:03.1275435Z             },
2026-07-26T22:33:03.1275512Z             {
2026-07-26T22:33:03.1275635Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-07-26T22:33:03.1275721Z               "line": 35
2026-07-26T22:33:03.1275809Z             },
2026-07-26T22:33:03.1275889Z             {
2026-07-26T22:33:03.1276003Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-07-26T22:33:03.1276094Z               "line": 115
2026-07-26T22:33:03.1276190Z             },
2026-07-26T22:33:03.1276269Z             {
2026-07-26T22:33:03.1276392Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.1276488Z               "line": 375
2026-07-26T22:33:03.1276572Z             },
2026-07-26T22:33:03.1276652Z             {
2026-07-26T22:33:03.1276753Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1276844Z               "line": 7112
2026-07-26T22:33:03.1276925Z             },
2026-07-26T22:33:03.1277005Z             {
2026-07-26T22:33:03.1277111Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.1277191Z               "line": 17
2026-07-26T22:33:03.1277277Z             }
2026-07-26T22:33:03.1277363Z           ]
2026-07-26T22:33:03.1277445Z         },
2026-07-26T22:33:03.1277530Z         "int": {
2026-07-26T22:33:03.1277624Z           "complete": true,
2026-07-26T22:33:03.1277721Z           "evidence": [
2026-07-26T22:33:03.1277803Z             {
2026-07-26T22:33:03.1277939Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-07-26T22:33:03.1278026Z               "line": 345
2026-07-26T22:33:03.1278117Z             },
2026-07-26T22:33:03.1278288Z             {
2026-07-26T22:33:03.1278418Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.1278502Z               "line": 732
2026-07-26T22:33:03.1278588Z             },
2026-07-26T22:33:03.1278666Z             {
2026-07-26T22:33:03.1278785Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.1278873Z               "line": 1128
2026-07-26T22:33:03.1279064Z             }
2026-07-26T22:33:03.1279144Z           ]
2026-07-26T22:33:03.1279219Z         },
2026-07-26T22:33:03.1279329Z         "unit": {
2026-07-26T22:33:03.1279445Z           "complete": true,
2026-07-26T22:33:03.1279538Z           "evidence": [
2026-07-26T22:33:03.1279634Z             {
2026-07-26T22:33:03.1279758Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.1279834Z               "line": 1457
2026-07-26T22:33:03.1280012Z             },
2026-07-26T22:33:03.1280092Z             {
2026-07-26T22:33:03.1280211Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.1280312Z               "line": 1538
2026-07-26T22:33:03.1280392Z             },
2026-07-26T22:33:03.1280473Z             {
2026-07-26T22:33:03.1280598Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-07-26T22:33:03.1280693Z               "line": 1108
2026-07-26T22:33:03.1280774Z             },
2026-07-26T22:33:03.1280860Z             {
2026-07-26T22:33:03.1280985Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-07-26T22:33:03.1281073Z               "line": 202
2026-07-26T22:33:03.1281155Z             },
2026-07-26T22:33:03.1281242Z             {
2026-07-26T22:33:03.1281364Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1281455Z               "line": 691
2026-07-26T22:33:03.1281538Z             },
2026-07-26T22:33:03.1281614Z             {
2026-07-26T22:33:03.1281741Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1281835Z               "line": 705
2026-07-26T22:33:03.1281922Z             },
2026-07-26T22:33:03.1281999Z             {
2026-07-26T22:33:03.1282122Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1282198Z               "line": 724
2026-07-26T22:33:03.1282280Z             },
2026-07-26T22:33:03.1282365Z             {
2026-07-26T22:33:03.1282484Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-07-26T22:33:03.1282566Z               "line": 156
2026-07-26T22:33:03.1282647Z             },
2026-07-26T22:33:03.1282722Z             {
2026-07-26T22:33:03.1282828Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-07-26T22:33:03.1282914Z               "line": 217
2026-07-26T22:33:03.1282999Z             },
2026-07-26T22:33:03.1283080Z             {
2026-07-26T22:33:03.1283196Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.1283276Z               "line": 1077
2026-07-26T22:33:03.1283386Z             },
2026-07-26T22:33:03.1283463Z             {
2026-07-26T22:33:03.1283582Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.1283681Z               "line": 1055
2026-07-26T22:33:03.1283762Z             },
2026-07-26T22:33:03.1283840Z             {
2026-07-26T22:33:03.1283957Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.1284047Z               "line": 1528
2026-07-26T22:33:03.1284128Z             }
2026-07-26T22:33:03.1284214Z           ]
2026-07-26T22:33:03.1284298Z         }
2026-07-26T22:33:03.1284373Z       }
2026-07-26T22:33:03.1284455Z     },
2026-07-26T22:33:03.1284537Z     {
2026-07-26T22:33:03.1284632Z       "id": "REQ-NET-2",
2026-07-26T22:33:03.1284799Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-07-26T22:33:03.1284899Z       "requiredStages": [
2026-07-26T22:33:03.1284980Z         "impl"
2026-07-26T22:33:03.1285061Z       ],
2026-07-26T22:33:03.1285142Z       "stages": {
2026-07-26T22:33:03.1285233Z         "doc": {
2026-07-26T22:33:03.1285327Z           "complete": false,
2026-07-26T22:33:03.1285415Z           "evidence": []
2026-07-26T22:33:03.1285614Z         },
2026-07-26T22:33:03.1285695Z         "impl": {
2026-07-26T22:33:03.1285781Z           "complete": true,
2026-07-26T22:33:03.1285866Z           "evidence": [
2026-07-26T22:33:03.1285948Z             {
2026-07-26T22:33:03.1286063Z               "path": "crates/spt-daemon/src/config.rs",
2026-07-26T22:33:03.1286153Z               "line": 57
2026-07-26T22:33:03.1286234Z             },
2026-07-26T22:33:03.1286320Z             {
2026-07-26T22:33:03.1286440Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1286538Z               "line": 71
2026-07-26T22:33:03.1286620Z             },
2026-07-26T22:33:03.1286698Z             {
2026-07-26T22:33:03.1286806Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1286900Z               "line": 81
2026-07-26T22:33:03.1287043Z             },
2026-07-26T22:33:03.1287128Z             {
2026-07-26T22:33:03.1287245Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1287351Z               "line": 281
2026-07-26T22:33:03.1287432Z             },
2026-07-26T22:33:03.1287522Z             {
2026-07-26T22:33:03.1287642Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1287738Z               "line": 297
2026-07-26T22:33:03.1287818Z             },
2026-07-26T22:33:03.1287903Z             {
2026-07-26T22:33:03.1288014Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1288105Z               "line": 312
2026-07-26T22:33:03.1288185Z             }
2026-07-26T22:33:03.1288271Z           ]
2026-07-26T22:33:03.1288353Z         },
2026-07-26T22:33:03.1288433Z         "int": {
2026-07-26T22:33:03.1288528Z           "complete": false,
2026-07-26T22:33:03.1288620Z           "evidence": []
2026-07-26T22:33:03.1288701Z         },
2026-07-26T22:33:03.1288801Z         "unit": {
2026-07-26T22:33:03.1288882Z           "complete": true,
2026-07-26T22:33:03.1289067Z           "evidence": [
2026-07-26T22:33:03.1289153Z             {
2026-07-26T22:33:03.1289293Z               "path": "crates/spt-daemon/src/config.rs",
2026-07-26T22:33:03.1289382Z               "line": 489
2026-07-26T22:33:03.1289467Z             }
2026-07-26T22:33:03.1289548Z           ]
2026-07-26T22:33:03.1289634Z         }
2026-07-26T22:33:03.1289709Z       }
2026-07-26T22:33:03.1289793Z     },
2026-07-26T22:33:03.1289875Z     {
2026-07-26T22:33:03.1289970Z       "id": "REQ-NET-3",
2026-07-26T22:33:03.1290137Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-07-26T22:33:03.1290233Z       "requiredStages": [
2026-07-26T22:33:03.1290313Z         "impl",
2026-07-26T22:33:03.1290403Z         "unit"
2026-07-26T22:33:03.1290480Z       ],
2026-07-26T22:33:03.1290572Z       "stages": {
2026-07-26T22:33:03.1290657Z         "doc": {
2026-07-26T22:33:03.1290751Z           "complete": false,
2026-07-26T22:33:03.1290848Z           "evidence": []
2026-07-26T22:33:03.1290943Z         },
2026-07-26T22:33:03.1291019Z         "impl": {
2026-07-26T22:33:03.1291119Z           "complete": true,
2026-07-26T22:33:03.1291211Z           "evidence": [
2026-07-26T22:33:03.1291300Z             {
2026-07-26T22:33:03.1291415Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:03.1291502Z               "line": 39
2026-07-26T22:33:03.1291591Z             },
2026-07-26T22:33:03.1291682Z             {
2026-07-26T22:33:03.1291797Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:03.1291874Z               "line": 183
2026-07-26T22:33:03.1291967Z             },
2026-07-26T22:33:03.1292049Z             {
2026-07-26T22:33:03.1292160Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:03.1292240Z               "line": 334
2026-07-26T22:33:03.1292334Z             },
2026-07-26T22:33:03.1292415Z             {
2026-07-26T22:33:03.1292540Z               "path": "crates/spt-net/src/net/sync.rs",
2026-07-26T22:33:03.1292625Z               "line": 36
2026-07-26T22:33:03.1292705Z             },
2026-07-26T22:33:03.1292883Z             {
2026-07-26T22:33:03.1293011Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.1293093Z               "line": 211
2026-07-26T22:33:03.1293173Z             },
2026-07-26T22:33:03.1293250Z             {
2026-07-26T22:33:03.1293379Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.1293470Z               "line": 324
2026-07-26T22:33:03.1293560Z             },
2026-07-26T22:33:03.1293655Z             {
2026-07-26T22:33:03.1293794Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.1293879Z               "line": 345
2026-07-26T22:33:03.1293974Z             },
2026-07-26T22:33:03.1294047Z             {
2026-07-26T22:33:03.1294174Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.1294265Z               "line": 403
2026-07-26T22:33:03.1294438Z             },
2026-07-26T22:33:03.1294522Z             {
2026-07-26T22:33:03.1294650Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.1294736Z               "line": 422
2026-07-26T22:33:03.1294816Z             },
2026-07-26T22:33:03.1294896Z             {
2026-07-26T22:33:03.1295020Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.1295092Z               "line": 460
2026-07-26T22:33:03.1295182Z             },
2026-07-26T22:33:03.1295267Z             {
2026-07-26T22:33:03.1295383Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.1295468Z               "line": 505
2026-07-26T22:33:03.1295554Z             },
2026-07-26T22:33:03.1295630Z             {
2026-07-26T22:33:03.1295755Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.1295849Z               "line": 518
2026-07-26T22:33:03.1295926Z             },
2026-07-26T22:33:03.1296012Z             {
2026-07-26T22:33:03.1296136Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-07-26T22:33:03.1296231Z               "line": 29
2026-07-26T22:33:03.1296318Z             },
2026-07-26T22:33:03.1296403Z             {
2026-07-26T22:33:03.1296522Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-07-26T22:33:03.1296614Z               "line": 72
2026-07-26T22:33:03.1296694Z             },
2026-07-26T22:33:03.1296789Z             {
2026-07-26T22:33:03.1296904Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-07-26T22:33:03.1297000Z               "line": 123
2026-07-26T22:33:03.1297080Z             }
2026-07-26T22:33:03.1297170Z           ]
2026-07-26T22:33:03.1297258Z         },
2026-07-26T22:33:03.1297347Z         "int": {
2026-07-26T22:33:03.1297441Z           "complete": false,
2026-07-26T22:33:03.1297536Z           "evidence": []
2026-07-26T22:33:03.1297617Z         },
2026-07-26T22:33:03.1297711Z         "unit": {
2026-07-26T22:33:03.1297791Z           "complete": true,
2026-07-26T22:33:03.1297873Z           "evidence": [
2026-07-26T22:33:03.1297955Z             {
2026-07-26T22:33:03.1298078Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-07-26T22:33:03.1298173Z               "line": 224
2026-07-26T22:33:03.1298250Z             },
2026-07-26T22:33:03.1298326Z             {
2026-07-26T22:33:03.1298444Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-07-26T22:33:03.1298537Z               "line": 352
2026-07-26T22:33:03.1298627Z             },
2026-07-26T22:33:03.1298698Z             {
2026-07-26T22:33:03.1298817Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-07-26T22:33:03.1298908Z               "line": 517
2026-07-26T22:33:03.1299079Z             },
2026-07-26T22:33:03.1299161Z             {
2026-07-26T22:33:03.1299275Z               "path": "crates/spt-net/src/net/sync.rs",
2026-07-26T22:33:03.1299361Z               "line": 93
2026-07-26T22:33:03.1299451Z             },
2026-07-26T22:33:03.1299552Z             {
2026-07-26T22:33:03.1299708Z               "path": "crates/spt-net/src/net/sync.rs",
2026-07-26T22:33:03.1299786Z               "line": 142
2026-07-26T22:33:03.1299867Z             },
2026-07-26T22:33:03.1300051Z             {
2026-07-26T22:33:03.1300170Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-07-26T22:33:03.1300269Z               "line": 315
2026-07-26T22:33:03.1300348Z             },
2026-07-26T22:33:03.1300425Z             {
2026-07-26T22:33:03.1300545Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-07-26T22:33:03.1300635Z               "line": 355
2026-07-26T22:33:03.1300716Z             },
2026-07-26T22:33:03.1300803Z             {
2026-07-26T22:33:03.1300917Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-07-26T22:33:03.1301011Z               "line": 494
2026-07-26T22:33:03.1301093Z             }
2026-07-26T22:33:03.1301188Z           ]
2026-07-26T22:33:03.1301274Z         }
2026-07-26T22:33:03.1301364Z       }
2026-07-26T22:33:03.1301442Z     },
2026-07-26T22:33:03.1301621Z     {
2026-07-26T22:33:03.1301718Z       "id": "REQ-NET-FAMILY-GATE",
2026-07-26T22:33:03.1304148Z       "title": "spt-core binds only IP families that are actually REACHABLE (ADR-0030), so a half-broken family (e.g. IPv6 whose AAAA resolves but whose path is dead) never silently consumes connection/discovery time. At NetEndpoint::bind (endpoint.rs), probe each family's reachability ONCE and bind only the working ones: dual-stack when both healthy; IPv4-only when IPv6 is dead; IPv6-only when IPv4 is dead (drop the DEAD family — NOT a fixed prefer-IPv4; IPv6-only networks must keep working). Re-evaluated on daemon restart (once-at-bind, no live re-eval in v1). Explicit overrides SPT_DISABLE_IPV6 / SPT_DISABLE_IPV4 force a family off (escape hatch + determinism + testing, mirroring SPT_NTP_SERVER); a forced-off family is never bound regardless of the probe. Reusable beyond join — every spt connection benefits. (next milestone)",
2026-07-26T22:33:03.1304258Z       "requiredStages": [
2026-07-26T22:33:03.1304359Z         "doc",
2026-07-26T22:33:03.1304444Z         "impl",
2026-07-26T22:33:03.1304525Z         "unit"
2026-07-26T22:33:03.1304607Z       ],
2026-07-26T22:33:03.1304702Z       "stages": {
2026-07-26T22:33:03.1304787Z         "doc": {
2026-07-26T22:33:03.1304878Z           "complete": true,
2026-07-26T22:33:03.1304960Z           "evidence": [
2026-07-26T22:33:03.1305044Z             {
2026-07-26T22:33:03.1305186Z               "path": "docs/adr/0030-robust-wan-subnet-join.md",
2026-07-26T22:33:03.1305263Z               "line": 3
2026-07-26T22:33:03.1305348Z             }
2026-07-26T22:33:03.1305428Z           ]
2026-07-26T22:33:03.1305513Z         },
2026-07-26T22:33:03.1305595Z         "impl": {
2026-07-26T22:33:03.1305681Z           "complete": true,
2026-07-26T22:33:03.1305761Z           "evidence": [
2026-07-26T22:33:03.1305842Z             {
2026-07-26T22:33:03.1305962Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1306062Z               "line": 210
2026-07-26T22:33:03.1306151Z             },
2026-07-26T22:33:03.1306239Z             {
2026-07-26T22:33:03.1306357Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1306457Z               "line": 255
2026-07-26T22:33:03.1306549Z             }
2026-07-26T22:33:03.1306625Z           ]
2026-07-26T22:33:03.1306705Z         },
2026-07-26T22:33:03.1306791Z         "int": {
2026-07-26T22:33:03.1306888Z           "complete": false,
2026-07-26T22:33:03.1306977Z           "evidence": []
2026-07-26T22:33:03.1307068Z         },
2026-07-26T22:33:03.1307154Z         "unit": {
2026-07-26T22:33:03.1307249Z           "complete": true,
2026-07-26T22:33:03.1307339Z           "evidence": [
2026-07-26T22:33:03.1307420Z             {
2026-07-26T22:33:03.1307541Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1307635Z               "line": 625
2026-07-26T22:33:03.1307721Z             },
2026-07-26T22:33:03.1307813Z             {
2026-07-26T22:33:03.1307931Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-07-26T22:33:03.1308034Z               "line": 675
2026-07-26T22:33:03.1308115Z             }
2026-07-26T22:33:03.1308300Z           ]
2026-07-26T22:33:03.1308385Z         }
2026-07-26T22:33:03.1308476Z       }
2026-07-26T22:33:03.1308557Z     },
2026-07-26T22:33:03.1308647Z     {
2026-07-26T22:33:03.1308743Z       "id": "REQ-NODE-IDENTITY",
2026-07-26T22:33:03.1309067Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-07-26T22:33:03.1309163Z       "requiredStages": [
2026-07-26T22:33:03.1309258Z         "impl",
2026-07-26T22:33:03.1309338Z         "unit"
2026-07-26T22:33:03.1309421Z       ],
2026-07-26T22:33:03.1309506Z       "stages": {
2026-07-26T22:33:03.1309596Z         "doc": {
2026-07-26T22:33:03.1309677Z           "complete": false,
2026-07-26T22:33:03.1309774Z           "evidence": []
2026-07-26T22:33:03.1309859Z         },
2026-07-26T22:33:03.1309954Z         "impl": {
2026-07-26T22:33:03.1310036Z           "complete": true,
2026-07-26T22:33:03.1310230Z           "evidence": [
2026-07-26T22:33:03.1310312Z             {
2026-07-26T22:33:03.1310441Z               "path": "crates/spt-proto/src/identity.rs",
2026-07-26T22:33:03.1310535Z               "line": 60
2026-07-26T22:33:03.1310625Z             },
2026-07-26T22:33:03.1310702Z             {
2026-07-26T22:33:03.1310824Z               "path": "crates/spt-proto/src/identity.rs",
2026-07-26T22:33:03.1310918Z               "line": 68
2026-07-26T22:33:03.1311009Z             },
2026-07-26T22:33:03.1311086Z             {
2026-07-26T22:33:03.1311209Z               "path": "crates/spt-proto/src/identity.rs",
2026-07-26T22:33:03.1311286Z               "line": 86
2026-07-26T22:33:03.1311377Z             },
2026-07-26T22:33:03.1311453Z             {
2026-07-26T22:33:03.1311571Z               "path": "crates/spt-proto/src/identity.rs",
2026-07-26T22:33:03.1311668Z               "line": 120
2026-07-26T22:33:03.1311753Z             },
2026-07-26T22:33:03.1311834Z             {
2026-07-26T22:33:03.1311954Z               "path": "crates/spt-proto/src/identity.rs",
2026-07-26T22:33:03.1312054Z               "line": 127
2026-07-26T22:33:03.1312130Z             },
2026-07-26T22:33:03.1312215Z             {
2026-07-26T22:33:03.1312331Z               "path": "crates/spt-proto/src/identity.rs",
2026-07-26T22:33:03.1312420Z               "line": 143
2026-07-26T22:33:03.1312501Z             },
2026-07-26T22:33:03.1312583Z             {
2026-07-26T22:33:03.1312693Z               "path": "crates/spt-store/src/nodeid.rs",
2026-07-26T22:33:03.1312788Z               "line": 16
2026-07-26T22:33:03.1312859Z             }
2026-07-26T22:33:03.1312941Z           ]
2026-07-26T22:33:03.1313027Z         },
2026-07-26T22:33:03.1313117Z         "int": {
2026-07-26T22:33:03.1313208Z           "complete": false,
2026-07-26T22:33:03.1313294Z           "evidence": []
2026-07-26T22:33:03.1313374Z         },
2026-07-26T22:33:03.1313454Z         "unit": {
2026-07-26T22:33:03.1313545Z           "complete": true,
2026-07-26T22:33:03.1313632Z           "evidence": [
2026-07-26T22:33:03.1313713Z             {
2026-07-26T22:33:03.1313826Z               "path": "crates/spt-proto/src/identity.rs",
2026-07-26T22:33:03.1313932Z               "line": 199
2026-07-26T22:33:03.1314037Z             },
2026-07-26T22:33:03.1314121Z             {
2026-07-26T22:33:03.1314237Z               "path": "crates/spt-proto/src/identity.rs",
2026-07-26T22:33:03.1314322Z               "line": 218
2026-07-26T22:33:03.1314417Z             },
2026-07-26T22:33:03.1314494Z             {
2026-07-26T22:33:03.1314613Z               "path": "crates/spt-proto/src/identity.rs",
2026-07-26T22:33:03.1314690Z               "line": 234
2026-07-26T22:33:03.1314785Z             },
2026-07-26T22:33:03.1314857Z             {
2026-07-26T22:33:03.1314975Z               "path": "crates/spt-proto/src/identity.rs",
2026-07-26T22:33:03.1315061Z               "line": 256
2026-07-26T22:33:03.1315143Z             },
2026-07-26T22:33:03.1315220Z             {
2026-07-26T22:33:03.1315337Z               "path": "crates/spt-store/src/nodeid.rs",
2026-07-26T22:33:03.1315429Z               "line": 127
2026-07-26T22:33:03.1315614Z             },
2026-07-26T22:33:03.1315685Z             {
2026-07-26T22:33:03.1315799Z               "path": "crates/spt-store/src/nodeid.rs",
2026-07-26T22:33:03.1315894Z               "line": 143
2026-07-26T22:33:03.1315973Z             },
2026-07-26T22:33:03.1316054Z             {
2026-07-26T22:33:03.1316160Z               "path": "crates/spt-store/src/nodeid.rs",
2026-07-26T22:33:03.1316255Z               "line": 158
2026-07-26T22:33:03.1316335Z             }
2026-07-26T22:33:03.1316426Z           ]
2026-07-26T22:33:03.1316499Z         }
2026-07-26T22:33:03.1316584Z       }
2026-07-26T22:33:03.1316660Z     },
2026-07-26T22:33:03.1316746Z     {
2026-07-26T22:33:03.1316842Z       "id": "REQ-NOTIF-1",
2026-07-26T22:33:03.1317194Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-07-26T22:33:03.1317361Z       "requiredStages": [
2026-07-26T22:33:03.1317453Z         "impl",
2026-07-26T22:33:03.1317532Z         "unit",
2026-07-26T22:33:03.1317633Z         "int"
2026-07-26T22:33:03.1317719Z       ],
2026-07-26T22:33:03.1317814Z       "stages": {
2026-07-26T22:33:03.1317895Z         "doc": {
2026-07-26T22:33:03.1317995Z           "complete": false,
2026-07-26T22:33:03.1318083Z           "evidence": []
2026-07-26T22:33:03.1318166Z         },
2026-07-26T22:33:03.1318243Z         "impl": {
2026-07-26T22:33:03.1318340Z           "complete": true,
2026-07-26T22:33:03.1318430Z           "evidence": [
2026-07-26T22:33:03.1321751Z             {
2026-07-26T22:33:03.1321918Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.1322013Z               "line": 1301
2026-07-26T22:33:03.1322141Z             },
2026-07-26T22:33:03.1322242Z             {
2026-07-26T22:33:03.1322376Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1322485Z               "line": 30
2026-07-26T22:33:03.1322566Z             },
2026-07-26T22:33:03.1322657Z             {
2026-07-26T22:33:03.1322780Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1322872Z               "line": 80
2026-07-26T22:33:03.1322953Z             },
2026-07-26T22:33:03.1323029Z             {
2026-07-26T22:33:03.1323143Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1323225Z               "line": 104
2026-07-26T22:33:03.1323310Z             },
2026-07-26T22:33:03.1323395Z             {
2026-07-26T22:33:03.1323506Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1323591Z               "line": 118
2026-07-26T22:33:03.1323672Z             },
2026-07-26T22:33:03.1323749Z             {
2026-07-26T22:33:03.1323854Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1323939Z               "line": 153
2026-07-26T22:33:03.1324024Z             },
2026-07-26T22:33:03.1324105Z             {
2026-07-26T22:33:03.1324230Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1324305Z               "line": 222
2026-07-26T22:33:03.1324400Z             },
2026-07-26T22:33:03.1324477Z             {
2026-07-26T22:33:03.1324592Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1324681Z               "line": 314
2026-07-26T22:33:03.1324764Z             },
2026-07-26T22:33:03.1324845Z             {
2026-07-26T22:33:03.1324963Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1325044Z               "line": 487
2026-07-26T22:33:03.1325169Z             },
2026-07-26T22:33:03.1325255Z             {
2026-07-26T22:33:03.1325368Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1325451Z               "line": 607
2026-07-26T22:33:03.1325535Z             },
2026-07-26T22:33:03.1325616Z             {
2026-07-26T22:33:03.1325741Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-07-26T22:33:03.1325827Z               "line": 24
2026-07-26T22:33:03.1325907Z             },
2026-07-26T22:33:03.1325989Z             {
2026-07-26T22:33:03.1326114Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-07-26T22:33:03.1326330Z               "line": 34
2026-07-26T22:33:03.1326417Z             },
2026-07-26T22:33:03.1326496Z             {
2026-07-26T22:33:03.1326619Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-07-26T22:33:03.1326700Z               "line": 60
2026-07-26T22:33:03.1326777Z             },
2026-07-26T22:33:03.1326853Z             {
2026-07-26T22:33:03.1326962Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-07-26T22:33:03.1327049Z               "line": 86
2026-07-26T22:33:03.1327125Z             },
2026-07-26T22:33:03.1327210Z             {
2026-07-26T22:33:03.1327321Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-07-26T22:33:03.1327406Z               "line": 102
2026-07-26T22:33:03.1327497Z             },
2026-07-26T22:33:03.1327679Z             {
2026-07-26T22:33:03.1327802Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-07-26T22:33:03.1327892Z               "line": 96
2026-07-26T22:33:03.1327979Z             },
2026-07-26T22:33:03.1328059Z             {
2026-07-26T22:33:03.1328178Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-07-26T22:33:03.1328270Z               "line": 44
2026-07-26T22:33:03.1328351Z             },
2026-07-26T22:33:03.1328431Z             {
2026-07-26T22:33:03.1328546Z               "path": "crates/spt-net/src/net/notif.rs",
2026-07-26T22:33:03.1328633Z               "line": 20
2026-07-26T22:33:03.1328713Z             },
2026-07-26T22:33:03.1328794Z             {
2026-07-26T22:33:03.1328900Z               "path": "crates/spt-net/src/net/notif.rs",
2026-07-26T22:33:03.1329089Z               "line": 30
2026-07-26T22:33:03.1329173Z             },
2026-07-26T22:33:03.1329260Z             {
2026-07-26T22:33:03.1329377Z               "path": "crates/spt-net/src/net/notif.rs",
2026-07-26T22:33:03.1329481Z               "line": 50
2026-07-26T22:33:03.1329562Z             },
2026-07-26T22:33:03.1329649Z             {
2026-07-26T22:33:03.1329772Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1329853Z               "line": 28
2026-07-26T22:33:03.1329931Z             },
2026-07-26T22:33:03.1330012Z             {
2026-07-26T22:33:03.1330120Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1330202Z               "line": 218
2026-07-26T22:33:03.1330283Z             },
2026-07-26T22:33:03.1330364Z             {
2026-07-26T22:33:03.1330463Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1330560Z               "line": 377
2026-07-26T22:33:03.1330640Z             },
2026-07-26T22:33:03.1330716Z             {
2026-07-26T22:33:03.1330822Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1330908Z               "line": 418
2026-07-26T22:33:03.1330993Z             },
2026-07-26T22:33:03.1331079Z             {
2026-07-26T22:33:03.1331190Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1331279Z               "line": 445
2026-07-26T22:33:03.1331360Z             },
2026-07-26T22:33:03.1331452Z             {
2026-07-26T22:33:03.1331547Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1331641Z               "line": 470
2026-07-26T22:33:03.1331721Z             },
2026-07-26T22:33:03.1331802Z             {
2026-07-26T22:33:03.1331911Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1331991Z               "line": 493
2026-07-26T22:33:03.1332072Z             },
2026-07-26T22:33:03.1332159Z             {
2026-07-26T22:33:03.1332278Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.1332362Z               "line": 148
2026-07-26T22:33:03.1332444Z             }
2026-07-26T22:33:03.1332526Z           ]
2026-07-26T22:33:03.1332607Z         },
2026-07-26T22:33:03.1332682Z         "int": {
2026-07-26T22:33:03.1332788Z           "complete": true,
2026-07-26T22:33:03.1332874Z           "evidence": [
2026-07-26T22:33:03.1332968Z             {
2026-07-26T22:33:03.1333193Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-07-26T22:33:03.1333288Z               "line": 286
2026-07-26T22:33:03.1333408Z             },
2026-07-26T22:33:03.1333536Z             {
2026-07-26T22:33:03.1333738Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-07-26T22:33:03.1333874Z               "line": 145
2026-07-26T22:33:03.1333946Z             },
2026-07-26T22:33:03.1334028Z             {
2026-07-26T22:33:03.1334151Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.1334232Z               "line": 741
2026-07-26T22:33:03.1334314Z             },
2026-07-26T22:33:03.1334391Z             {
2026-07-26T22:33:03.1334518Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.1334603Z               "line": 1257
2026-07-26T22:33:03.1334684Z             }
2026-07-26T22:33:03.1334889Z           ]
2026-07-26T22:33:03.1335004Z         },
2026-07-26T22:33:03.1335095Z         "unit": {
2026-07-26T22:33:03.1335180Z           "complete": true,
2026-07-26T22:33:03.1335275Z           "evidence": [
2026-07-26T22:33:03.1335343Z             {
2026-07-26T22:33:03.1335457Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1335537Z               "line": 707
2026-07-26T22:33:03.1335628Z             },
2026-07-26T22:33:03.1335705Z             {
2026-07-26T22:33:03.1335810Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1335890Z               "line": 771
2026-07-26T22:33:03.1335968Z             },
2026-07-26T22:33:03.1336039Z             {
2026-07-26T22:33:03.1336153Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1336229Z               "line": 881
2026-07-26T22:33:03.1336311Z             },
2026-07-26T22:33:03.1336392Z             {
2026-07-26T22:33:03.1336505Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1336587Z               "line": 913
2026-07-26T22:33:03.1336669Z             },
2026-07-26T22:33:03.1336753Z             {
2026-07-26T22:33:03.1336876Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1336972Z               "line": 981
2026-07-26T22:33:03.1337057Z             },
2026-07-26T22:33:03.1337132Z             {
2026-07-26T22:33:03.1337247Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1337332Z               "line": 1039
2026-07-26T22:33:03.1337413Z             },
2026-07-26T22:33:03.1337503Z             {
2026-07-26T22:33:03.1337609Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1337705Z               "line": 1495
2026-07-26T22:33:03.1337784Z             },
2026-07-26T22:33:03.1337871Z             {
2026-07-26T22:33:03.1337990Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-07-26T22:33:03.1338080Z               "line": 165
2026-07-26T22:33:03.1338166Z             },
2026-07-26T22:33:03.1338263Z             {
2026-07-26T22:33:03.1338377Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-07-26T22:33:03.1338467Z               "line": 294
2026-07-26T22:33:03.1338539Z             },
2026-07-26T22:33:03.1338624Z             {
2026-07-26T22:33:03.1338733Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-07-26T22:33:03.1338830Z               "line": 317
2026-07-26T22:33:03.1338912Z             },
2026-07-26T22:33:03.1339072Z             {
2026-07-26T22:33:03.1339188Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-07-26T22:33:03.1339278Z               "line": 361
2026-07-26T22:33:03.1339354Z             },
2026-07-26T22:33:03.1339430Z             {
2026-07-26T22:33:03.1339551Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-07-26T22:33:03.1339639Z               "line": 398
2026-07-26T22:33:03.1339711Z             },
2026-07-26T22:33:03.1339792Z             {
2026-07-26T22:33:03.1339910Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-07-26T22:33:03.1339994Z               "line": 132
2026-07-26T22:33:03.1340070Z             },
2026-07-26T22:33:03.1340253Z             {
2026-07-26T22:33:03.1340366Z               "path": "crates/spt-net/src/net/notif.rs",
2026-07-26T22:33:03.1340457Z               "line": 75
2026-07-26T22:33:03.1340533Z             },
2026-07-26T22:33:03.1340614Z             {
2026-07-26T22:33:03.1340733Z               "path": "crates/spt-net/src/net/notif.rs",
2026-07-26T22:33:03.1340825Z               "line": 100
2026-07-26T22:33:03.1340906Z             },
2026-07-26T22:33:03.1340985Z             {
2026-07-26T22:33:03.1341096Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1341177Z               "line": 621
2026-07-26T22:33:03.1341262Z             },
2026-07-26T22:33:03.1341367Z             {
2026-07-26T22:33:03.1341577Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1341712Z               "line": 659
2026-07-26T22:33:03.1341935Z             },
2026-07-26T22:33:03.1342012Z             {
2026-07-26T22:33:03.1342126Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1342220Z               "line": 675
2026-07-26T22:33:03.1342300Z             },
2026-07-26T22:33:03.1342372Z             {
2026-07-26T22:33:03.1342485Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1342580Z               "line": 714
2026-07-26T22:33:03.1342670Z             },
2026-07-26T22:33:03.1342762Z             {
2026-07-26T22:33:03.1342866Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1342946Z               "line": 731
2026-07-26T22:33:03.1343024Z             },
2026-07-26T22:33:03.1343114Z             {
2026-07-26T22:33:03.1343223Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1343309Z               "line": 759
2026-07-26T22:33:03.1343395Z             },
2026-07-26T22:33:03.1343476Z             {
2026-07-26T22:33:03.1343585Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1343673Z               "line": 790
2026-07-26T22:33:03.1343758Z             },
2026-07-26T22:33:03.1343843Z             {
2026-07-26T22:33:03.1343968Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.1344049Z               "line": 1299
2026-07-26T22:33:03.1344134Z             }
2026-07-26T22:33:03.1344215Z           ]
2026-07-26T22:33:03.1344298Z         }
2026-07-26T22:33:03.1344378Z       }
2026-07-26T22:33:03.1344463Z     },
2026-07-26T22:33:03.1344539Z     {
2026-07-26T22:33:03.1344636Z       "id": "REQ-NOTIF-2",
2026-07-26T22:33:03.1344898Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-07-26T22:33:03.1345003Z       "requiredStages": [
2026-07-26T22:33:03.1345078Z         "doc",
2026-07-26T22:33:03.1345163Z         "impl",
2026-07-26T22:33:03.1345244Z         "unit",
2026-07-26T22:33:03.1345331Z         "int"
2026-07-26T22:33:03.1345416Z       ],
2026-07-26T22:33:03.1345506Z       "stages": {
2026-07-26T22:33:03.1345588Z         "doc": {
2026-07-26T22:33:03.1345683Z           "complete": true,
2026-07-26T22:33:03.1345778Z           "evidence": [
2026-07-26T22:33:03.1345859Z             {
2026-07-26T22:33:03.1345956Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.1346046Z               "line": 582
2026-07-26T22:33:03.1346135Z             },
2026-07-26T22:33:03.1346218Z             {
2026-07-26T22:33:03.1346327Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.1346412Z               "line": 189
2026-07-26T22:33:03.1346494Z             }
2026-07-26T22:33:03.1346580Z           ]
2026-07-26T22:33:03.1346665Z         },
2026-07-26T22:33:03.1346737Z         "impl": {
2026-07-26T22:33:03.1346828Z           "complete": true,
2026-07-26T22:33:03.1346905Z           "evidence": [
2026-07-26T22:33:03.1346980Z             {
2026-07-26T22:33:03.1347099Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1347182Z               "line": 393
2026-07-26T22:33:03.1347272Z             },
2026-07-26T22:33:03.1347355Z             {
2026-07-26T22:33:03.1347460Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1347635Z               "line": 407
2026-07-26T22:33:03.1347716Z             },
2026-07-26T22:33:03.1347797Z             {
2026-07-26T22:33:03.1347907Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1348001Z               "line": 432
2026-07-26T22:33:03.1348083Z             },
2026-07-26T22:33:03.1348169Z             {
2026-07-26T22:33:03.1348288Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.1348378Z               "line": 264
2026-07-26T22:33:03.1348460Z             },
2026-07-26T22:33:03.1348536Z             {
2026-07-26T22:33:03.1348655Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.1348746Z               "line": 157
2026-07-26T22:33:03.1348823Z             },
2026-07-26T22:33:03.1348903Z             {
2026-07-26T22:33:03.1349166Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1349256Z               "line": 4979
2026-07-26T22:33:03.1349327Z             },
2026-07-26T22:33:03.1349419Z             {
2026-07-26T22:33:03.1349518Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1349613Z               "line": 5028
2026-07-26T22:33:03.1349690Z             },
2026-07-26T22:33:03.1349772Z             {
2026-07-26T22:33:03.1349866Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1349947Z               "line": 5136
2026-07-26T22:33:03.1350025Z             },
2026-07-26T22:33:03.1350106Z             {
2026-07-26T22:33:03.1350199Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1350289Z               "line": 5192
2026-07-26T22:33:03.1350366Z             }
2026-07-26T22:33:03.1350447Z           ]
2026-07-26T22:33:03.1350526Z         },
2026-07-26T22:33:03.1350611Z         "int": {
2026-07-26T22:33:03.1350702Z           "complete": true,
2026-07-26T22:33:03.1350788Z           "evidence": [
2026-07-26T22:33:03.1350864Z             {
2026-07-26T22:33:03.1350983Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.1351084Z               "line": 867
2026-07-26T22:33:03.1351156Z             },
2026-07-26T22:33:03.1351240Z             {
2026-07-26T22:33:03.1351347Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.1351436Z               "line": 1500
2026-07-26T22:33:03.1351503Z             }
2026-07-26T22:33:03.1351584Z           ]
2026-07-26T22:33:03.1351666Z         },
2026-07-26T22:33:03.1351746Z         "unit": {
2026-07-26T22:33:03.1351837Z           "complete": true,
2026-07-26T22:33:03.1351927Z           "evidence": [
2026-07-26T22:33:03.1352005Z             {
2026-07-26T22:33:03.1352127Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1352209Z               "line": 1174
2026-07-26T22:33:03.1352286Z             },
2026-07-26T22:33:03.1352362Z             {
2026-07-26T22:33:03.1352480Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1352567Z               "line": 1245
2026-07-26T22:33:03.1352654Z             },
2026-07-26T22:33:03.1352738Z             {
2026-07-26T22:33:03.1352837Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1352918Z               "line": 15755
2026-07-26T22:33:03.1352999Z             },
2026-07-26T22:33:03.1353078Z             {
2026-07-26T22:33:03.1353177Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1353264Z               "line": 15823
2026-07-26T22:33:03.1353346Z             }
2026-07-26T22:33:03.1353426Z           ]
2026-07-26T22:33:03.1353506Z         }
2026-07-26T22:33:03.1353594Z       }
2026-07-26T22:33:03.1353674Z     },
2026-07-26T22:33:03.1353745Z     {
2026-07-26T22:33:03.1353850Z       "id": "REQ-NOTIF-COALESCE",
2026-07-26T22:33:03.1355019Z       "title": "Coalesce-key supersession: producer-stamped key REQUIRED in namespaced form <owner>:<key> (e.g. spt-core:update-staged) — the produce front door rejects un-namespaced keys; producing a new row with the same (scope-target, kind, key) auto-dismisses the prior rows, latest-wins; supersession expresses through the existing dismissed one-way latch (semilattice unchanged)",
2026-07-26T22:33:03.1355229Z       "requiredStages": [
2026-07-26T22:33:03.1355309Z         "doc",
2026-07-26T22:33:03.1355396Z         "impl",
2026-07-26T22:33:03.1355482Z         "unit"
2026-07-26T22:33:03.1355558Z       ],
2026-07-26T22:33:03.1355652Z       "stages": {
2026-07-26T22:33:03.1355732Z         "doc": {
2026-07-26T22:33:03.1355838Z           "complete": true,
2026-07-26T22:33:03.1355929Z           "evidence": [
2026-07-26T22:33:03.1356014Z             {
2026-07-26T22:33:03.1356196Z               "path": "docs/adr/0046-notif-scope-supersession-quiet-delivery.md",
2026-07-26T22:33:03.1356291Z               "line": 47
2026-07-26T22:33:03.1356366Z             }
2026-07-26T22:33:03.1356449Z           ]
2026-07-26T22:33:03.1356530Z         },
2026-07-26T22:33:03.1356705Z         "impl": {
2026-07-26T22:33:03.1356797Z           "complete": true,
2026-07-26T22:33:03.1356892Z           "evidence": [
2026-07-26T22:33:03.1356987Z             {
2026-07-26T22:33:03.1357112Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1357197Z               "line": 69
2026-07-26T22:33:03.1357283Z             },
2026-07-26T22:33:03.1357359Z             {
2026-07-26T22:33:03.1357479Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1357573Z               "line": 73
2026-07-26T22:33:03.1357649Z             },
2026-07-26T22:33:03.1357727Z             {
2026-07-26T22:33:03.1357840Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1357930Z               "line": 351
2026-07-26T22:33:03.1358015Z             },
2026-07-26T22:33:03.1358097Z             {
2026-07-26T22:33:03.1358214Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1358299Z               "line": 41
2026-07-26T22:33:03.1358381Z             },
2026-07-26T22:33:03.1358472Z             {
2026-07-26T22:33:03.1358585Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1358681Z               "line": 93
2026-07-26T22:33:03.1358768Z             },
2026-07-26T22:33:03.1358853Z             {
2026-07-26T22:33:03.1359035Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1359129Z               "line": 139
2026-07-26T22:33:03.1359220Z             },
2026-07-26T22:33:03.1359301Z             {
2026-07-26T22:33:03.1359402Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1359497Z               "line": 203
2026-07-26T22:33:03.1359582Z             },
2026-07-26T22:33:03.1359669Z             {
2026-07-26T22:33:03.1359768Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1359863Z               "line": 247
2026-07-26T22:33:03.1359940Z             },
2026-07-26T22:33:03.1360027Z             {
2026-07-26T22:33:03.1360135Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1360231Z               "line": 279
2026-07-26T22:33:03.1360318Z             }
2026-07-26T22:33:03.1360393Z           ]
2026-07-26T22:33:03.1360474Z         },
2026-07-26T22:33:03.1360560Z         "int": {
2026-07-26T22:33:03.1360652Z           "complete": false,
2026-07-26T22:33:03.1360746Z           "evidence": []
2026-07-26T22:33:03.1360831Z         },
2026-07-26T22:33:03.1360912Z         "unit": {
2026-07-26T22:33:03.1360997Z           "complete": true,
2026-07-26T22:33:03.1361091Z           "evidence": [
2026-07-26T22:33:03.1361162Z             {
2026-07-26T22:33:03.1361276Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1361368Z               "line": 1092
2026-07-26T22:33:03.1361457Z             },
2026-07-26T22:33:03.1361563Z             {
2026-07-26T22:33:03.1361682Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1361772Z               "line": 1135
2026-07-26T22:33:03.1361858Z             },
2026-07-26T22:33:03.1361945Z             {
2026-07-26T22:33:03.1362087Z               "path": "crates/spt-net/src/net/notif.rs",
2026-07-26T22:33:03.1362178Z               "line": 120
2026-07-26T22:33:03.1362378Z             },
2026-07-26T22:33:03.1362459Z             {
2026-07-26T22:33:03.1362584Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1362673Z               "line": 813
2026-07-26T22:33:03.1362817Z             },
2026-07-26T22:33:03.1362899Z             {
2026-07-26T22:33:03.1363011Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1363103Z               "line": 841
2026-07-26T22:33:03.1363190Z             },
2026-07-26T22:33:03.1363275Z             {
2026-07-26T22:33:03.1363388Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1363469Z               "line": 874
2026-07-26T22:33:03.1363555Z             }
2026-07-26T22:33:03.1363648Z           ]
2026-07-26T22:33:03.1363724Z         }
2026-07-26T22:33:03.1363810Z       }
2026-07-26T22:33:03.1364005Z     },
2026-07-26T22:33:03.1364096Z     {
2026-07-26T22:33:03.1364201Z       "id": "REQ-NOTIF-DRAIN-ROW-VALIDITY",
2026-07-26T22:33:03.1370038Z       "title": "A spooled notify envelope is validated against its notif row at DELIVERY time — a copy outliving its row must not deliver. (ADR-0046 Amendment 1 + KNOWN-HAZARDS 7.53; operator field regression from perri's node 2026-07-22, doyle root-caused same day — DAEMON-LIFECYCLE W1 RIDER.) TODAY: quiet delivery (REQ-NOTIF-QUIET-DELIVERY) makes every surface an active_only SPOOL write per endpoint, and every row-lifecycle mechanism (apply-seam dismissal REQ-NOTIF-SEAM-DISMISS, coalesce supersession, TTL, the one-shot migration) touches ROWS only — so a copy spooled while the endpoint was busy/offline is a detached snapshot no dismissal can recall, delivering 'update available' on an already-updated node at the next drain, once per qualifying surface event (perri: twice; doyle's own session: four stale 0.39.x drains post-upgrade). FIX: at the safe-point drain choke point (api poll deferred presentation, spt/src/api/delivery.rs cmd_poll), a notify-kind envelope delivers ONLY if its notif_id resolves to a live UNDISMISSED row in the local notif store; dismissed/superseded/TTL-expired/unknown -> dropped silently; N copies of one notif_id in a drain dedupe to ONE delivery. Non-notify spool content is untouched (ordinary messages are not revocable and MUST deliver). Legacy pre-0.40.0 plain-message copies carry no notif_id, cannot be validated, and self-clear by their one drain — no machinery. Rejected: recall-on-dismiss spool sweeps (race the drain, span every perch, miss in-flight copies); live-only notify delivery (the spool IS quiet delivery's safe-point mechanism). Gate: impl — the validity gate + dedupe at cmd_poll's deferred presentation; unit — the gate predicate cells (live row delivers / dismissed drops / unknown drops / dedupe collapses / non-notify passes untouched); int — the perri rig RED-first: surface an update notif to a non-draining endpoint (copy spools), dismiss the row via the apply seam, drain -> NOTHING delivers; control leg: undismissed row's copy delivers exactly once.",
2026-07-26T22:33:03.1370176Z       "requiredStages": [
2026-07-26T22:33:03.1370253Z         "impl",
2026-07-26T22:33:03.1370338Z         "unit",
2026-07-26T22:33:03.1370414Z         "int"
2026-07-26T22:33:03.1370500Z       ],
2026-07-26T22:33:03.1370587Z       "stages": {
2026-07-26T22:33:03.1370667Z         "doc": {
2026-07-26T22:33:03.1370767Z           "complete": true,
2026-07-26T22:33:03.1370850Z           "evidence": [
2026-07-26T22:33:03.1370930Z             {
2026-07-26T22:33:03.1371029Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.1371121Z               "line": 767
2026-07-26T22:33:03.1371202Z             },
2026-07-26T22:33:03.1371282Z             {
2026-07-26T22:33:03.1371467Z               "path": "docs/adr/0046-notif-scope-supersession-quiet-delivery.md",
2026-07-26T22:33:03.1371553Z               "line": 133
2026-07-26T22:33:03.1371627Z             }
2026-07-26T22:33:03.1371712Z           ]
2026-07-26T22:33:03.1371799Z         },
2026-07-26T22:33:03.1371880Z         "impl": {
2026-07-26T22:33:03.1372070Z           "complete": true,
2026-07-26T22:33:03.1372171Z           "evidence": [
2026-07-26T22:33:03.1372252Z             {
2026-07-26T22:33:03.1372375Z               "path": "crates/spt-daemon/src/notifgate.rs",
2026-07-26T22:33:03.1372462Z               "line": 48
2026-07-26T22:33:03.1372538Z             },
2026-07-26T22:33:03.1372619Z             {
2026-07-26T22:33:03.1372742Z               "path": "crates/spt-daemon/src/notifgate.rs",
2026-07-26T22:33:03.1372824Z               "line": 76
2026-07-26T22:33:03.1372909Z             },
2026-07-26T22:33:03.1372985Z             {
2026-07-26T22:33:03.1373106Z               "path": "crates/spt-daemon/src/notifgate.rs",
2026-07-26T22:33:03.1373187Z               "line": 105
2026-07-26T22:33:03.1373267Z             },
2026-07-26T22:33:03.1373348Z             {
2026-07-26T22:33:03.1373468Z               "path": "crates/spt-daemon/src/notifgate.rs",
2026-07-26T22:33:03.1373653Z               "line": 120
2026-07-26T22:33:03.1373731Z             },
2026-07-26T22:33:03.1373821Z             {
2026-07-26T22:33:03.1373938Z               "path": "crates/spt-daemon/src/relay.rs",
2026-07-26T22:33:03.1374024Z               "line": 73
2026-07-26T22:33:03.1374105Z             },
2026-07-26T22:33:03.1374189Z             {
2026-07-26T22:33:03.1374303Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.1374389Z               "line": 289
2026-07-26T22:33:03.1374466Z             }
2026-07-26T22:33:03.1374556Z           ]
2026-07-26T22:33:03.1374636Z         },
2026-07-26T22:33:03.1374714Z         "int": {
2026-07-26T22:33:03.1374809Z           "complete": true,
2026-07-26T22:33:03.1374903Z           "evidence": [
2026-07-26T22:33:03.1374980Z             {
2026-07-26T22:33:03.1375133Z               "path": "crates/spt-daemon/tests/notif_drain_validity.rs",
2026-07-26T22:33:03.1375218Z               "line": 99
2026-07-26T22:33:03.1375310Z             },
2026-07-26T22:33:03.1375391Z             {
2026-07-26T22:33:03.1375542Z               "path": "crates/spt-daemon/tests/notif_drain_validity.rs",
2026-07-26T22:33:03.1375634Z               "line": 128
2026-07-26T22:33:03.1375725Z             },
2026-07-26T22:33:03.1375806Z             {
2026-07-26T22:33:03.1375949Z               "path": "crates/spt-daemon/tests/notif_drain_validity.rs",
2026-07-26T22:33:03.1376026Z               "line": 152
2026-07-26T22:33:03.1376110Z             }
2026-07-26T22:33:03.1376196Z           ]
2026-07-26T22:33:03.1376278Z         },
2026-07-26T22:33:03.1376359Z         "unit": {
2026-07-26T22:33:03.1376458Z           "complete": true,
2026-07-26T22:33:03.1376545Z           "evidence": [
2026-07-26T22:33:03.1376631Z             {
2026-07-26T22:33:03.1376753Z               "path": "crates/spt-daemon/src/notifgate.rs",
2026-07-26T22:33:03.1376848Z               "line": 170
2026-07-26T22:33:03.1376929Z             },
2026-07-26T22:33:03.1377021Z             {
2026-07-26T22:33:03.1377134Z               "path": "crates/spt-daemon/src/notifgate.rs",
2026-07-26T22:33:03.1377230Z               "line": 221
2026-07-26T22:33:03.1377316Z             },
2026-07-26T22:33:03.1377392Z             {
2026-07-26T22:33:03.1377510Z               "path": "crates/spt-daemon/src/notifgate.rs",
2026-07-26T22:33:03.1377603Z               "line": 231
2026-07-26T22:33:03.1377688Z             },
2026-07-26T22:33:03.1377763Z             {
2026-07-26T22:33:03.1377883Z               "path": "crates/spt-daemon/src/notifgate.rs",
2026-07-26T22:33:03.1377979Z               "line": 241
2026-07-26T22:33:03.1378064Z             },
2026-07-26T22:33:03.1378150Z             {
2026-07-26T22:33:03.1378270Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.1378360Z               "line": 351
2026-07-26T22:33:03.1378436Z             }
2026-07-26T22:33:03.1378523Z           ]
2026-07-26T22:33:03.1378608Z         }
2026-07-26T22:33:03.1378689Z       }
2026-07-26T22:33:03.1378784Z     },
2026-07-26T22:33:03.1378857Z     {
2026-07-26T22:33:03.1379046Z       "id": "REQ-NOTIF-MIGRATE",
2026-07-26T22:33:03.1380236Z       "title": "One-shot field migration: on first run the new binary auto-dismisses existing rows with from_id = spt-update (kinds consent/rollback) — the known-stale class; idempotent; the dismissals replicate so cleanup reaches not-yet-upgraded peers; agent/psyche rows untouched; the update worker re-produces any genuinely-current update notif within one check cadence",
2026-07-26T22:33:03.1380335Z       "requiredStages": [
2026-07-26T22:33:03.1380417Z         "doc",
2026-07-26T22:33:03.1380503Z         "impl",
2026-07-26T22:33:03.1380588Z         "unit",
2026-07-26T22:33:03.1380669Z         "int"
2026-07-26T22:33:03.1380746Z       ],
2026-07-26T22:33:03.1380841Z       "stages": {
2026-07-26T22:33:03.1380922Z         "doc": {
2026-07-26T22:33:03.1381021Z           "complete": true,
2026-07-26T22:33:03.1381109Z           "evidence": [
2026-07-26T22:33:03.1381303Z             {
2026-07-26T22:33:03.1381485Z               "path": "docs/adr/0046-notif-scope-supersession-quiet-delivery.md",
2026-07-26T22:33:03.1381599Z               "line": 103
2026-07-26T22:33:03.1381676Z             }
2026-07-26T22:33:03.1381762Z           ]
2026-07-26T22:33:03.1381838Z         },
2026-07-26T22:33:03.1381917Z         "impl": {
2026-07-26T22:33:03.1382008Z           "complete": true,
2026-07-26T22:33:03.1382098Z           "evidence": [
2026-07-26T22:33:03.1382183Z             {
2026-07-26T22:33:03.1382306Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.1382392Z               "line": 1073
2026-07-26T22:33:03.1382469Z             },
2026-07-26T22:33:03.1382554Z             {
2026-07-26T22:33:03.1382673Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1382750Z               "line": 360
2026-07-26T22:33:03.1382850Z             }
2026-07-26T22:33:03.1382930Z           ]
2026-07-26T22:33:03.1383013Z         },
2026-07-26T22:33:03.1383098Z         "int": {
2026-07-26T22:33:03.1383198Z           "complete": true,
2026-07-26T22:33:03.1383288Z           "evidence": [
2026-07-26T22:33:03.1383375Z             {
2026-07-26T22:33:03.1383503Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-07-26T22:33:03.1383589Z               "line": 328
2026-07-26T22:33:03.1383661Z             }
2026-07-26T22:33:03.1383742Z           ]
2026-07-26T22:33:03.1383822Z         },
2026-07-26T22:33:03.1383908Z         "unit": {
2026-07-26T22:33:03.1384004Z           "complete": true,
2026-07-26T22:33:03.1384094Z           "evidence": [
2026-07-26T22:33:03.1384175Z             {
2026-07-26T22:33:03.1384296Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1384391Z               "line": 950
2026-07-26T22:33:03.1384470Z             }
2026-07-26T22:33:03.1384555Z           ]
2026-07-26T22:33:03.1384636Z         }
2026-07-26T22:33:03.1384726Z       }
2026-07-26T22:33:03.1384806Z     },
2026-07-26T22:33:03.1384882Z     {
2026-07-26T22:33:03.1384988Z       "id": "REQ-NOTIF-QUIET-DELIVERY",
2026-07-26T22:33:03.1386051Z       "title": "The notify kind rides the active_only window UNCONDITIONALLY, rollback included: spool-only, never live TCP, never a wake, for EVERY producer; loudness = resurface-until-dismissed persistence, never PTY interruption; boundary resurface (clear/compact/new-session/wake) + the adapter safe-point drain are the surfacing paths; a future interrupting alert needs a new kind + its own ADR, not an exception here",
2026-07-26T22:33:03.1386156Z       "requiredStages": [
2026-07-26T22:33:03.1386238Z         "doc",
2026-07-26T22:33:03.1386327Z         "impl",
2026-07-26T22:33:03.1386413Z         "unit",
2026-07-26T22:33:03.1386494Z         "int"
2026-07-26T22:33:03.1386591Z       ],
2026-07-26T22:33:03.1386670Z       "stages": {
2026-07-26T22:33:03.1386751Z         "doc": {
2026-07-26T22:33:03.1386843Z           "complete": true,
2026-07-26T22:33:03.1386938Z           "evidence": [
2026-07-26T22:33:03.1387028Z             {
2026-07-26T22:33:03.1387206Z               "path": "docs/adr/0046-notif-scope-supersession-quiet-delivery.md",
2026-07-26T22:33:03.1387370Z               "line": 73
2026-07-26T22:33:03.1387456Z             }
2026-07-26T22:33:03.1387538Z           ]
2026-07-26T22:33:03.1387619Z         },
2026-07-26T22:33:03.1387699Z         "impl": {
2026-07-26T22:33:03.1387795Z           "complete": true,
2026-07-26T22:33:03.1387886Z           "evidence": [
2026-07-26T22:33:03.1387971Z             {
2026-07-26T22:33:03.1388090Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1388182Z               "line": 205
2026-07-26T22:33:03.1388268Z             }
2026-07-26T22:33:03.1388347Z           ]
2026-07-26T22:33:03.1388424Z         },
2026-07-26T22:33:03.1388511Z         "int": {
2026-07-26T22:33:03.1388606Z           "complete": true,
2026-07-26T22:33:03.1388696Z           "evidence": [
2026-07-26T22:33:03.1388773Z             {
2026-07-26T22:33:03.1388920Z               "path": "crates/spt-daemon/tests/notif_quiet_delivery.rs",
2026-07-26T22:33:03.1389183Z               "line": 60
2026-07-26T22:33:03.1389263Z             }
2026-07-26T22:33:03.1389359Z           ]
2026-07-26T22:33:03.1389437Z         },
2026-07-26T22:33:03.1389525Z         "unit": {
2026-07-26T22:33:03.1389615Z           "complete": true,
2026-07-26T22:33:03.1389710Z           "evidence": [
2026-07-26T22:33:03.1389791Z             {
2026-07-26T22:33:03.1389909Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1390003Z               "line": 1331
2026-07-26T22:33:03.1390081Z             }
2026-07-26T22:33:03.1390162Z           ]
2026-07-26T22:33:03.1390247Z         }
2026-07-26T22:33:03.1390323Z       }
2026-07-26T22:33:03.1390414Z     },
2026-07-26T22:33:03.1390491Z     {
2026-07-26T22:33:03.1390595Z       "id": "REQ-NOTIF-SCOPE",
2026-07-26T22:33:03.1392140Z       "title": "Notif scope is a per-row producer-chosen attribute node|subnet: node-scoped rows (update/consent/rollback kinds) live and die on their node and NEVER enter a replication feed; subnet-scoped rows keep the full ADR-0007 machinery (replication, cross-node dismiss, semilattice join); scope determines the first-fire candidate set (node-scoped targets the most-recently-active endpoint ON that node). New row fields additive serde-defaulted (host_binaries pattern) — old peers parse clean, schema regen drift-gated",
2026-07-26T22:33:03.1392269Z       "requiredStages": [
2026-07-26T22:33:03.1392393Z         "doc",
2026-07-26T22:33:03.1392473Z         "impl",
2026-07-26T22:33:03.1392558Z         "unit",
2026-07-26T22:33:03.1392659Z         "int"
2026-07-26T22:33:03.1392747Z       ],
2026-07-26T22:33:03.1392832Z       "stages": {
2026-07-26T22:33:03.1392909Z         "doc": {
2026-07-26T22:33:03.1392991Z           "complete": true,
2026-07-26T22:33:03.1393086Z           "evidence": [
2026-07-26T22:33:03.1393166Z             {
2026-07-26T22:33:03.1393348Z               "path": "docs/adr/0046-notif-scope-supersession-quiet-delivery.md",
2026-07-26T22:33:03.1393433Z               "line": 33
2026-07-26T22:33:03.1393519Z             }
2026-07-26T22:33:03.1393601Z           ]
2026-07-26T22:33:03.1393701Z         },
2026-07-26T22:33:03.1393786Z         "impl": {
2026-07-26T22:33:03.1393882Z           "complete": true,
2026-07-26T22:33:03.1393968Z           "evidence": [
2026-07-26T22:33:03.1394049Z             {
2026-07-26T22:33:03.1394168Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1394259Z               "line": 277
2026-07-26T22:33:03.1394340Z             },
2026-07-26T22:33:03.1394421Z             {
2026-07-26T22:33:03.1394537Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1394636Z               "line": 350
2026-07-26T22:33:03.1394716Z             },
2026-07-26T22:33:03.1394798Z             {
2026-07-26T22:33:03.1394913Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-07-26T22:33:03.1395007Z               "line": 87
2026-07-26T22:33:03.1395092Z             },
2026-07-26T22:33:03.1395183Z             {
2026-07-26T22:33:03.1395300Z               "path": "crates/spt-daemon/src/presence.rs",
2026-07-26T22:33:03.1395394Z               "line": 184
2026-07-26T22:33:03.1395596Z             },
2026-07-26T22:33:03.1395681Z             {
2026-07-26T22:33:03.1395795Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1395882Z               "line": 49
2026-07-26T22:33:03.1395968Z             },
2026-07-26T22:33:03.1396047Z             {
2026-07-26T22:33:03.1396154Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1396253Z               "line": 132
2026-07-26T22:33:03.1396338Z             },
2026-07-26T22:33:03.1396425Z             {
2026-07-26T22:33:03.1396545Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1396640Z               "line": 203
2026-07-26T22:33:03.1396725Z             },
2026-07-26T22:33:03.1396812Z             {
2026-07-26T22:33:03.1400044Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1400304Z               "line": 246
2026-07-26T22:33:03.1400398Z             }
2026-07-26T22:33:03.1400478Z           ]
2026-07-26T22:33:03.1400568Z         },
2026-07-26T22:33:03.1400641Z         "int": {
2026-07-26T22:33:03.1400741Z           "complete": true,
2026-07-26T22:33:03.1400826Z           "evidence": [
2026-07-26T22:33:03.1400903Z             {
2026-07-26T22:33:03.1401046Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-07-26T22:33:03.1401141Z               "line": 324
2026-07-26T22:33:03.1401222Z             }
2026-07-26T22:33:03.1401304Z           ]
2026-07-26T22:33:03.1401380Z         },
2026-07-26T22:33:03.1401474Z         "unit": {
2026-07-26T22:33:03.1401566Z           "complete": true,
2026-07-26T22:33:03.1401646Z           "evidence": [
2026-07-26T22:33:03.1401723Z             {
2026-07-26T22:33:03.1401851Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1401943Z               "line": 1092
2026-07-26T22:33:03.1402018Z             },
2026-07-26T22:33:03.1402104Z             {
2026-07-26T22:33:03.1402225Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1402318Z               "line": 1135
2026-07-26T22:33:03.1402390Z             },
2026-07-26T22:33:03.1402466Z             {
2026-07-26T22:33:03.1402591Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1402671Z               "line": 1364
2026-07-26T22:33:03.1402767Z             },
2026-07-26T22:33:03.1402844Z             {
2026-07-26T22:33:03.1402972Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-07-26T22:33:03.1403052Z               "line": 258
2026-07-26T22:33:03.1403138Z             },
2026-07-26T22:33:03.1403210Z             {
2026-07-26T22:33:03.1403336Z               "path": "crates/spt-net/src/net/notif.rs",
2026-07-26T22:33:03.1403411Z               "line": 115
2026-07-26T22:33:03.1403498Z             },
2026-07-26T22:33:03.1403580Z             {
2026-07-26T22:33:03.1403698Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1403784Z               "line": 808
2026-07-26T22:33:03.1403870Z             },
2026-07-26T22:33:03.1403951Z             {
2026-07-26T22:33:03.1404069Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1404152Z               "line": 1011
2026-07-26T22:33:03.1404242Z             }
2026-07-26T22:33:03.1404318Z           ]
2026-07-26T22:33:03.1404409Z         }
2026-07-26T22:33:03.1404490Z       }
2026-07-26T22:33:03.1404571Z     },
2026-07-26T22:33:03.1404647Z     {
2026-07-26T22:33:03.1404757Z       "id": "REQ-NOTIF-SEAM-DISMISS",
2026-07-26T22:33:03.1405983Z       "title": "Staleness is dismissed at the seam that knows, never evaluated at surface: a successful update apply dismisses spt-core:update-staged; the update worker's next check, seeing running >= staged, dismisses it too (covers out-of-band installs); a later successful update dismisses a rollback row; the primitive stores rows and latches — NO relevance predicates, nothing evaluated at surface time",
2026-07-26T22:33:03.1406088Z       "requiredStages": [
2026-07-26T22:33:03.1406171Z         "doc",
2026-07-26T22:33:03.1406255Z         "impl",
2026-07-26T22:33:03.1406447Z         "unit",
2026-07-26T22:33:03.1406528Z         "int"
2026-07-26T22:33:03.1406612Z       ],
2026-07-26T22:33:03.1406690Z       "stages": {
2026-07-26T22:33:03.1406780Z         "doc": {
2026-07-26T22:33:03.1406861Z           "complete": true,
2026-07-26T22:33:03.1406956Z           "evidence": [
2026-07-26T22:33:03.1407043Z             {
2026-07-26T22:33:03.1407228Z               "path": "docs/adr/0046-notif-scope-supersession-quiet-delivery.md",
2026-07-26T22:33:03.1407319Z               "line": 58
2026-07-26T22:33:03.1407400Z             }
2026-07-26T22:33:03.1407481Z           ]
2026-07-26T22:33:03.1407557Z         },
2026-07-26T22:33:03.1407644Z         "impl": {
2026-07-26T22:33:03.1407743Z           "complete": true,
2026-07-26T22:33:03.1407829Z           "evidence": [
2026-07-26T22:33:03.1407910Z             {
2026-07-26T22:33:03.1408119Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:03.1408210Z               "line": 643
2026-07-26T22:33:03.1408298Z             },
2026-07-26T22:33:03.1408378Z             {
2026-07-26T22:33:03.1408505Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-07-26T22:33:03.1408600Z               "line": 97
2026-07-26T22:33:03.1408687Z             },
2026-07-26T22:33:03.1408772Z             {
2026-07-26T22:33:03.1408881Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1409049Z               "line": 433
2026-07-26T22:33:03.1409138Z             }
2026-07-26T22:33:03.1409215Z           ]
2026-07-26T22:33:03.1409297Z         },
2026-07-26T22:33:03.1409378Z         "int": {
2026-07-26T22:33:03.1409472Z           "complete": true,
2026-07-26T22:33:03.1409564Z           "evidence": [
2026-07-26T22:33:03.1409650Z             {
2026-07-26T22:33:03.1409768Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-07-26T22:33:03.1409869Z               "line": 845
2026-07-26T22:33:03.1409951Z             }
2026-07-26T22:33:03.1410035Z           ]
2026-07-26T22:33:03.1410121Z         },
2026-07-26T22:33:03.1410199Z         "unit": {
2026-07-26T22:33:03.1410294Z           "complete": true,
2026-07-26T22:33:03.1410388Z           "evidence": [
2026-07-26T22:33:03.1410479Z             {
2026-07-26T22:33:03.1410599Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-07-26T22:33:03.1410683Z               "line": 402
2026-07-26T22:33:03.1410759Z             },
2026-07-26T22:33:03.1410840Z             {
2026-07-26T22:33:03.1410954Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1411043Z               "line": 976
2026-07-26T22:33:03.1411123Z             }
2026-07-26T22:33:03.1411201Z           ]
2026-07-26T22:33:03.1411273Z         }
2026-07-26T22:33:03.1411353Z       }
2026-07-26T22:33:03.1411438Z     },
2026-07-26T22:33:03.1411510Z     {
2026-07-26T22:33:03.1411601Z       "id": "REQ-NOTIF-TTL",
2026-07-26T22:33:03.1412607Z       "title": "Producer-optional TTL for informational kinds with no dismissal seam (node-paired, agent-issued): expired row auto-dismissed instead of surfaced — a timestamp compare, not a predicate; expiry IGNORES seen-state (TTL means stale-after-this; a producer that cannot accept silent expiry must not set one); no global default",
2026-07-26T22:33:03.1412716Z       "requiredStages": [
2026-07-26T22:33:03.1412794Z         "doc",
2026-07-26T22:33:03.1412878Z         "impl",
2026-07-26T22:33:03.1412965Z         "unit"
2026-07-26T22:33:03.1413046Z       ],
2026-07-26T22:33:03.1413124Z       "stages": {
2026-07-26T22:33:03.1413207Z         "doc": {
2026-07-26T22:33:03.1413298Z           "complete": true,
2026-07-26T22:33:03.1413390Z           "evidence": [
2026-07-26T22:33:03.1413467Z             {
2026-07-26T22:33:03.1413654Z               "path": "docs/adr/0046-notif-scope-supersession-quiet-delivery.md",
2026-07-26T22:33:03.1413746Z               "line": 89
2026-07-26T22:33:03.1413830Z             }
2026-07-26T22:33:03.1413905Z           ]
2026-07-26T22:33:03.1413990Z         },
2026-07-26T22:33:03.1414082Z         "impl": {
2026-07-26T22:33:03.1414329Z           "complete": true,
2026-07-26T22:33:03.1414412Z           "evidence": [
2026-07-26T22:33:03.1414488Z             {
2026-07-26T22:33:03.1414611Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1414688Z               "line": 180
2026-07-26T22:33:03.1414773Z             },
2026-07-26T22:33:03.1414854Z             {
2026-07-26T22:33:03.1414974Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1415055Z               "line": 263
2026-07-26T22:33:03.1415136Z             },
2026-07-26T22:33:03.1415217Z             {
2026-07-26T22:33:03.1415332Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1415413Z               "line": 621
2026-07-26T22:33:03.1415493Z             },
2026-07-26T22:33:03.1415574Z             {
2026-07-26T22:33:03.1415784Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1415865Z               "line": 145
2026-07-26T22:33:03.1415947Z             },
2026-07-26T22:33:03.1416028Z             {
2026-07-26T22:33:03.1416146Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1416231Z               "line": 203
2026-07-26T22:33:03.1416317Z             },
2026-07-26T22:33:03.1416392Z             {
2026-07-26T22:33:03.1416496Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1416577Z               "line": 248
2026-07-26T22:33:03.1416668Z             },
2026-07-26T22:33:03.1416745Z             {
2026-07-26T22:33:03.1416858Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1416940Z               "line": 341
2026-07-26T22:33:03.1417026Z             }
2026-07-26T22:33:03.1417106Z           ]
2026-07-26T22:33:03.1417187Z         },
2026-07-26T22:33:03.1417265Z         "int": {
2026-07-26T22:33:03.1417360Z           "complete": false,
2026-07-26T22:33:03.1417454Z           "evidence": []
2026-07-26T22:33:03.1417536Z         },
2026-07-26T22:33:03.1417617Z         "unit": {
2026-07-26T22:33:03.1417716Z           "complete": true,
2026-07-26T22:33:03.1417802Z           "evidence": [
2026-07-26T22:33:03.1417894Z             {
2026-07-26T22:33:03.1418008Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1418098Z               "line": 1424
2026-07-26T22:33:03.1418189Z             },
2026-07-26T22:33:03.1418266Z             {
2026-07-26T22:33:03.1418384Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1418470Z               "line": 1460
2026-07-26T22:33:03.1418557Z             },
2026-07-26T22:33:03.1418642Z             {
2026-07-26T22:33:03.1418761Z               "path": "crates/spt-net/src/net/notif.rs",
2026-07-26T22:33:03.1418848Z               "line": 120
2026-07-26T22:33:03.1418933Z             },
2026-07-26T22:33:03.1419103Z             {
2026-07-26T22:33:03.1419218Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1419309Z               "line": 813
2026-07-26T22:33:03.1419393Z             },
2026-07-26T22:33:03.1419480Z             {
2026-07-26T22:33:03.1419594Z               "path": "crates/spt-store/src/notif.rs",
2026-07-26T22:33:03.1419680Z               "line": 919
2026-07-26T22:33:03.1419766Z             }
2026-07-26T22:33:03.1419843Z           ]
2026-07-26T22:33:03.1419928Z         }
2026-07-26T22:33:03.1420014Z       }
2026-07-26T22:33:03.1420095Z     },
2026-07-26T22:33:03.1420177Z     {
2026-07-26T22:33:03.1420305Z       "id": "REQ-NOTIF-UPDATE-ROW-VERSION-RETIRE",
2026-07-26T22:33:03.1429418Z       "title": "An update-available notif row minted by a node running PRE-0.40.0 spt is retired on the version the running node has ALREADY reached — because the keyed catch-up dismissal is structurally blind to it. (DAEMON-LIFECYCLE W2 RIDER, operator-ordered; doyle root-caused end to end 2026-07-22 on the live box.) FIELD CHAIN, verified: GRAVITY-NVDA-PC (f15d837b, BIGNET) runs pre-0.40.0 spt, whose legacy producer mints the update notice SUBNET-scoped with NO coalesce key (the scoped+keyed producer shipped in 0.40.0). The row replicated fleet-wide. The modern catch-up dismissal (REQ-NOTIF-SEAM-DISMISS, pump/update.rs dismiss_staged_notif_if_caught_up) dismisses ONLY by coalesce key, so a keyless row can never be retired by it: a FULLY-UPDATED node holds a live 'v0.41.0 available' row forever, surfacing once per endpoint at every boundary (observed: todlando ~19:54 + Librarian/Athenaeum-Library; store showed seen=2, undismissed, the only undismissed update row in the whole history). FIX: a version-grounded retirement sweep at the EXISTING catch-up site, same per-tick per-subnet cadence, running ALONGSIDE the key path (which stays PRIMARY — belt-and-braces, not a replacement): dismiss any UNDISMISSED row whose from_id == 'spt-update' AND whose body advertises a version that PARSES AND is <= the running image's own env!(CARGO_PKG_VERSION) (the same running-image self-truth the existing out-of-band leg reads). CONSERVATISM INHERITED VERBATIM from version_ge: an unparseable advertised version NEVER dismisses (the ancient 'update-available 5' counter-shape stays untouched), and advertised > running STAYS LIVE (a genuinely pending notice must survive the sweep). MUST NOT KEY ON kind ALONE: kind=consent is SHARED with the grants act-gate asks (grants.rs mints consent-kind through the plain front door with from_id = the asking agent), so from_id == 'spt-update' PLUS the body version-parse is the discriminator. The relevance predicate stays DAEMON-side (ADR-0046: the notif primitive evaluates no relevance predicate) — the store keeps only its existing undismissed()/dismiss() primitives. KNOWN LIMIT, stated not hidden: the ORIGIN node's one-time cross-node wake at mint is a plain live send from old code and is not preventable from our side; retiring/updating the legacy node is the operator's lever. This fix kills the row's AFTERLIFE (undismissable + boundary-resurfaces at every endpoint forever), which is the repeating harm. Gate: impl — the sweep + the pure advertised-version extractor at the catch-up site; unit — the extractor cells (dotted token found / v-prefixed / counter-shape and garbage refused) and the retire predicate; int — RED-first four legs: (1) legacy-shaped row (subnet scope, NULL key, from_id spt-update, advertised <= running) SURVIVES pre-fix ticks and is DISMISSED post-fix; (2) sibling advertising > running stays live; (3) sibling with a garbage/counter-shape body stays live; (4) regression: a modern Node-scoped KEYED row still dismisses via the key path; plus an asserted (not assumed) replication leg — a sweep-minted dismissal merges as dismissed through notifsync, since the fleet-wide kill is the point.",
2026-07-26T22:33:03.1429759Z       "requiredStages": [
2026-07-26T22:33:03.1429846Z         "impl",
2026-07-26T22:33:03.1429926Z         "unit",
2026-07-26T22:33:03.1430007Z         "int"
2026-07-26T22:33:03.1430078Z       ],
2026-07-26T22:33:03.1430164Z       "stages": {
2026-07-26T22:33:03.1430250Z         "doc": {
2026-07-26T22:33:03.1430345Z           "complete": false,
2026-07-26T22:33:03.1430427Z           "evidence": []
2026-07-26T22:33:03.1430527Z         },
2026-07-26T22:33:03.1430607Z         "impl": {
2026-07-26T22:33:03.1430708Z           "complete": true,
2026-07-26T22:33:03.1430799Z           "evidence": [
2026-07-26T22:33:03.1430884Z             {
2026-07-26T22:33:03.1431014Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-07-26T22:33:03.1431104Z               "line": 139
2026-07-26T22:33:03.1431185Z             },
2026-07-26T22:33:03.1431265Z             {
2026-07-26T22:33:03.1431395Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-07-26T22:33:03.1431503Z               "line": 176
2026-07-26T22:33:03.1431614Z             }
2026-07-26T22:33:03.1431738Z           ]
2026-07-26T22:33:03.1431860Z         },
2026-07-26T22:33:03.1431965Z         "int": {
2026-07-26T22:33:03.1432060Z           "complete": true,
2026-07-26T22:33:03.1432153Z           "evidence": [
2026-07-26T22:33:03.1432239Z             {
2026-07-26T22:33:03.1432398Z               "path": "crates/spt-daemon/tests/notif_update_row_retire.rs",
2026-07-26T22:33:03.1432592Z               "line": 123
2026-07-26T22:33:03.1432675Z             },
2026-07-26T22:33:03.1432755Z             {
2026-07-26T22:33:03.1432902Z               "path": "crates/spt-daemon/tests/notif_update_row_retire.rs",
2026-07-26T22:33:03.1432989Z               "line": 298
2026-07-26T22:33:03.1433103Z             }
2026-07-26T22:33:03.1433203Z           ]
2026-07-26T22:33:03.1433289Z         },
2026-07-26T22:33:03.1433374Z         "unit": {
2026-07-26T22:33:03.1433460Z           "complete": true,
2026-07-26T22:33:03.1433551Z           "evidence": [
2026-07-26T22:33:03.1433638Z             {
2026-07-26T22:33:03.1433756Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-07-26T22:33:03.1433846Z               "line": 330
2026-07-26T22:33:03.1433929Z             },
2026-07-26T22:33:03.1434080Z             {
2026-07-26T22:33:03.1434205Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-07-26T22:33:03.1434347Z               "line": 375
2026-07-26T22:33:03.1434447Z             }
2026-07-26T22:33:03.1434525Z           ]
2026-07-26T22:33:03.1434606Z         }
2026-07-26T22:33:03.1434675Z       }
2026-07-26T22:33:03.1434756Z     },
2026-07-26T22:33:03.1434837Z     {
2026-07-26T22:33:03.1434942Z       "id": "REQ-ONEWAY-STREAM-TERMINAL",
2026-07-26T22:33:03.1437082Z       "title": "REGISTRY-LIFECYCLE W1 (ADR-0040 decision 1, hertz defect B leg 1): a one-way fire-and-forget stream family is TERMINAL at successful FIN, sender-side — the registry pump retires its OWN feed row after write+FIN via the existing net-stream-retire verb (best-effort on N-1 brokers per ADR-0038 A). Sender history on the long-lived pump conn stops accumulating: steady-state row population is O(active exchanges), not O(feeds since conn start). Gate: impl — pump push_feed retire-after-FIN; unit — successful feed retires its row, failed/unFINed feed does not, retire failure is best-effort non-fatal; int — rides REQ-HAZARD-REGISTRY-STALL plateau seam (eligible rows plateau O(active) over N rounds); doc — ADR-0040.",
2026-07-26T22:33:03.1437186Z       "requiredStages": [
2026-07-26T22:33:03.1437275Z         "doc",
2026-07-26T22:33:03.1437356Z         "impl",
2026-07-26T22:33:03.1437437Z         "unit",
2026-07-26T22:33:03.1437522Z         "int"
2026-07-26T22:33:03.1437602Z       ],
2026-07-26T22:33:03.1437687Z       "stages": {
2026-07-26T22:33:03.1437774Z         "doc": {
2026-07-26T22:33:03.1437860Z           "complete": true,
2026-07-26T22:33:03.1437945Z           "evidence": [
2026-07-26T22:33:03.1438026Z             {
2026-07-26T22:33:03.1438236Z               "path": "docs/adr/0040-bounded-stream-seat-lifecycle-one-way-terminal.md",
2026-07-26T22:33:03.1438321Z               "line": 52
2026-07-26T22:33:03.1438404Z             }
2026-07-26T22:33:03.1438484Z           ]
2026-07-26T22:33:03.1438574Z         },
2026-07-26T22:33:03.1438651Z         "impl": {
2026-07-26T22:33:03.1438747Z           "complete": true,
2026-07-26T22:33:03.1438827Z           "evidence": [
2026-07-26T22:33:03.1438923Z             {
2026-07-26T22:33:03.1439161Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.1439261Z               "line": 1642
2026-07-26T22:33:03.1439344Z             },
2026-07-26T22:33:03.1439423Z             {
2026-07-26T22:33:03.1439542Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.1439620Z               "line": 5839
2026-07-26T22:33:03.1439701Z             },
2026-07-26T22:33:03.1439780Z             {
2026-07-26T22:33:03.1439891Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.1439983Z               "line": 1979
2026-07-26T22:33:03.1440058Z             },
2026-07-26T22:33:03.1440143Z             {
2026-07-26T22:33:03.1440266Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.1440353Z               "line": 366
2026-07-26T22:33:03.1440438Z             },
2026-07-26T22:33:03.1440518Z             {
2026-07-26T22:33:03.1440639Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.1440838Z               "line": 1157
2026-07-26T22:33:03.1440910Z             },
2026-07-26T22:33:03.1440992Z             {
2026-07-26T22:33:03.1441110Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:03.1441186Z               "line": 357
2026-07-26T22:33:03.1441264Z             }
2026-07-26T22:33:03.1441335Z           ]
2026-07-26T22:33:03.1441411Z         },
2026-07-26T22:33:03.1441491Z         "int": {
2026-07-26T22:33:03.1441584Z           "complete": true,
2026-07-26T22:33:03.1441669Z           "evidence": [
2026-07-26T22:33:03.1441750Z             {
2026-07-26T22:33:03.1441899Z               "path": "crates/spt-daemon/tests/registry_lifecycle.rs",
2026-07-26T22:33:03.1441993Z               "line": 165
2026-07-26T22:33:03.1442073Z             }
2026-07-26T22:33:03.1442150Z           ]
2026-07-26T22:33:03.1442326Z         },
2026-07-26T22:33:03.1442401Z         "unit": {
2026-07-26T22:33:03.1442496Z           "complete": true,
2026-07-26T22:33:03.1442592Z           "evidence": [
2026-07-26T22:33:03.1442676Z             {
2026-07-26T22:33:03.1442795Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.1442876Z               "line": 3194
2026-07-26T22:33:03.1442963Z             },
2026-07-26T22:33:03.1443043Z             {
2026-07-26T22:33:03.1443162Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.1443258Z               "line": 2031
2026-07-26T22:33:03.1443334Z             }
2026-07-26T22:33:03.1443419Z           ]
2026-07-26T22:33:03.1443573Z         }
2026-07-26T22:33:03.1443658Z       }
2026-07-26T22:33:03.1443738Z     },
2026-07-26T22:33:03.1443816Z     {
2026-07-26T22:33:03.1443925Z       "id": "REQ-OPID-MINTER-NAMESPACE",
2026-07-26T22:33:03.1450889Z       "title": "A-4a (REMOTE-TRUTH triage §A + ADR-0034 Decision 1 + Amendments 1 & 2): the broker effect journal's dedup key gains a minter dimension so ops minted by independent counters can never collide. ROOT (high, ground-truthed vs HEAD): the journaled-op producers key into ONE journal namespace (NET_EFFECT_SESSION|shell_sid, op) at broker.rs (EffectKey=(u64,u64)); a CLI wake op colliding with an already-journaled daemon op reproduces the typed 'already applied … retry with a fresh op_id' with NO broker restart (field-hit: spt endpoint wake id@node WOKE_FAIL). Same latent class: nethost dial_ops/stream_ops HashMap<u64,u64> ('Shares the one net op-id namespace') would re-clobber even after the journal separates them; AND shellchan::deliver_stdin_pending journals (shell_sid, row_id) so an rc operator's ops on the same shell_sid collide with spool row ids (dropped keystroke OR dropped spool row). Amendment 2 corrected the minter set: the REAL journal minters are {cli, pump, rc, shell} + legacy — psyche/epoch are the EpochSource notif/lease counter domain, NEVER submit to apply_once, DROPPED from the journal enum (a tag with no stamp site = doc'd-but-dead knob). FIX (Decision 1 + Amdt 2): ONE canonical Minter enum {Legacy, Cli, Pump, Rc, Shell, Wake} — Legacy reserved for pre-upgrade lines + untagged wire, monotonically shrinks; enum is the single source for the TEXTUAL journal-line token (self-describing during recovery). EffectKey becomes (effect-class, minter, op); recover() DUAL-PARSES (old shorter line → minter=Legacy, new longer line → parsed tag) so old journals need no migration and old-shape keys can never equal new-shape (migration-free). A MintedOp{minter, seq} newtype REPLACES bare op_id:u64 through the brain/daemon THREADING paths so forgot-to-stamp is UNCOMPILABLE (row_id stays the shell seq — never re-minted, the durable spool exactly-once identity). Wire keeps an additive optional minter field (serde default absent ⇒ Legacy materialized at broker decode; serde_json no deny_unknown_fields ⇒ NO wire version bump); the newtype is NOT forced into wire structs. nethost op-maps re-key by (minter, op). Red-first: mint an rc op == a journaled shell/pump/daemon op int on the same session → pre-fix the second dedups/clobbers (WOKE_FAIL class); post-fix both are distinct keys, both Applied.",
2026-07-26T22:33:03.1451223Z       "requiredStages": [
2026-07-26T22:33:03.1451318Z         "doc",
2026-07-26T22:33:03.1451412Z         "impl",
2026-07-26T22:33:03.1451495Z         "unit"
2026-07-26T22:33:03.1451575Z       ],
2026-07-26T22:33:03.1451656Z       "stages": {
2026-07-26T22:33:03.1451737Z         "doc": {
2026-07-26T22:33:03.1451819Z           "complete": true,
2026-07-26T22:33:03.1451904Z           "evidence": [
2026-07-26T22:33:03.1451981Z             {
2026-07-26T22:33:03.1452139Z               "path": "docs/adr/0034-per-minter-op-id-namespacing.md",
2026-07-26T22:33:03.1452219Z               "line": 70
2026-07-26T22:33:03.1452300Z             }
2026-07-26T22:33:03.1452385Z           ]
2026-07-26T22:33:03.1452463Z         },
2026-07-26T22:33:03.1452544Z         "impl": {
2026-07-26T22:33:03.1452734Z           "complete": true,
2026-07-26T22:33:03.1452816Z           "evidence": [
2026-07-26T22:33:03.1452900Z             {
2026-07-26T22:33:03.1453024Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.1453119Z               "line": 134
2026-07-26T22:33:03.1453190Z             }
2026-07-26T22:33:03.1453279Z           ]
2026-07-26T22:33:03.1453355Z         },
2026-07-26T22:33:03.1453450Z         "int": {
2026-07-26T22:33:03.1453547Z           "complete": false,
2026-07-26T22:33:03.1453640Z           "evidence": []
2026-07-26T22:33:03.1453722Z         },
2026-07-26T22:33:03.1453814Z         "unit": {
2026-07-26T22:33:03.1453899Z           "complete": true,
2026-07-26T22:33:03.1453993Z           "evidence": [
2026-07-26T22:33:03.1454076Z             {
2026-07-26T22:33:03.1454195Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.1454275Z               "line": 995
2026-07-26T22:33:03.1454352Z             },
2026-07-26T22:33:03.1454429Z             {
2026-07-26T22:33:03.1454557Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.1454643Z               "line": 1024
2026-07-26T22:33:03.1454729Z             },
2026-07-26T22:33:03.1454805Z             {
2026-07-26T22:33:03.1454923Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.1455001Z               "line": 1094
2026-07-26T22:33:03.1455091Z             },
2026-07-26T22:33:03.1455171Z             {
2026-07-26T22:33:03.1455287Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.1455364Z               "line": 1148
2026-07-26T22:33:03.1455448Z             },
2026-07-26T22:33:03.1455530Z             {
2026-07-26T22:33:03.1455635Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.1455731Z               "line": 1780
2026-07-26T22:33:03.1455815Z             },
2026-07-26T22:33:03.1455905Z             {
2026-07-26T22:33:03.1456024Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.1456127Z               "line": 2249
2026-07-26T22:33:03.1456193Z             }
2026-07-26T22:33:03.1456289Z           ]
2026-07-26T22:33:03.1456419Z         }
2026-07-26T22:33:03.1456512Z       }
2026-07-26T22:33:03.1456594Z     },
2026-07-26T22:33:03.1456686Z     {
2026-07-26T22:33:03.1456822Z       "id": "REQ-OPID-TRACING-RETRY",
2026-07-26T22:33:03.1461396Z       "title": "A-4b (REMOTE-TRUTH triage §A + ADR-0034 Decision 2): the tracing-only op families auto-retry ONCE with a fresh op on the typed no-longer-held error, so a broker-restart-dropped conn/stream self-heals instead of surfacing core lingo to the user. ROOT: net/rest.rs declares rest op-ids 'tracing/correlation only … redelivery needs reporting, not dedup', yet the journal enforced exactly-once on them — a rest/attach op whose conn the broker no longer holds (post-restart) returned the typed 'already applied … no longer held … retry with a fresh op_id' (broker.rs:2796 net-dial / 3047 stream-open) straight to the user (WOKE_FAIL / rc attach fail). FIX (Decision 2, scoped): the rest family (request_rest) + rc attach stream-open (request_attach_endpoint) — and ONLY those — catch the typed no-longer-held error INTERNALLY and re-issue ONCE with a FRESH op minted from the SAME minter (A-4a MintedOp; same producer, new seq). sync/update pull families (request_sync/request_update, durable open_op) are NOT wrapped — their exactly-once dedup is load-bearing (negative control). The typed op error becomes internal-only; if the retry ALSO fails, the user-facing line names the observable situation + next action in operator language, ZERO journal/op/brain lingo (F-1 public-error rule applies early — this string is user-facing). Red-first: mint a colliding op → assert the retry succeeds + the user sees NOTHING; NEGATIVE CONTROL — a durable family's no-longer-held stays a hard error, no silent retry.",
2026-07-26T22:33:03.1461667Z       "requiredStages": [
2026-07-26T22:33:03.1461774Z         "doc",
2026-07-26T22:33:03.1461887Z         "impl",
2026-07-26T22:33:03.1462126Z         "unit"
2026-07-26T22:33:03.1462216Z       ],
2026-07-26T22:33:03.1462316Z       "stages": {
2026-07-26T22:33:03.1462403Z         "doc": {
2026-07-26T22:33:03.1462498Z           "complete": true,
2026-07-26T22:33:03.1462583Z           "evidence": [
2026-07-26T22:33:03.1462670Z             {
2026-07-26T22:33:03.1462827Z               "path": "docs/adr/0034-per-minter-op-id-namespacing.md",
2026-07-26T22:33:03.1462912Z               "line": 136
2026-07-26T22:33:03.1462994Z             }
2026-07-26T22:33:03.1463075Z           ]
2026-07-26T22:33:03.1463160Z         },
2026-07-26T22:33:03.1463241Z         "impl": {
2026-07-26T22:33:03.1463333Z           "complete": true,
2026-07-26T22:33:03.1463428Z           "evidence": [
2026-07-26T22:33:03.1463513Z             {
2026-07-26T22:33:03.1463631Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.1463712Z               "line": 212
2026-07-26T22:33:03.1463801Z             },
2026-07-26T22:33:03.1463886Z             {
2026-07-26T22:33:03.1464011Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.1464097Z               "line": 219
2026-07-26T22:33:03.1464196Z             },
2026-07-26T22:33:03.1464282Z             {
2026-07-26T22:33:03.1464397Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.1464487Z               "line": 227
2026-07-26T22:33:03.1464587Z             },
2026-07-26T22:33:03.1464664Z             {
2026-07-26T22:33:03.1464783Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.1464878Z               "line": 238
2026-07-26T22:33:03.1464979Z             },
2026-07-26T22:33:03.1465050Z             {
2026-07-26T22:33:03.1465169Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.1465266Z               "line": 260
2026-07-26T22:33:03.1465355Z             },
2026-07-26T22:33:03.1465441Z             {
2026-07-26T22:33:03.1465556Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.1465637Z               "line": 287
2026-07-26T22:33:03.1465731Z             },
2026-07-26T22:33:03.1465812Z             {
2026-07-26T22:33:03.1465947Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.1466042Z               "line": 377
2026-07-26T22:33:03.1466127Z             }
2026-07-26T22:33:03.1466210Z           ]
2026-07-26T22:33:03.1466286Z         },
2026-07-26T22:33:03.1466366Z         "int": {
2026-07-26T22:33:03.1466465Z           "complete": false,
2026-07-26T22:33:03.1466547Z           "evidence": []
2026-07-26T22:33:03.1466631Z         },
2026-07-26T22:33:03.1466711Z         "unit": {
2026-07-26T22:33:03.1466811Z           "complete": true,
2026-07-26T22:33:03.1466897Z           "evidence": [
2026-07-26T22:33:03.1466983Z             {
2026-07-26T22:33:03.1467096Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.1467183Z               "line": 1198
2026-07-26T22:33:03.1467264Z             },
2026-07-26T22:33:03.1467345Z             {
2026-07-26T22:33:03.1467459Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.1467551Z               "line": 1240
2026-07-26T22:33:03.1467637Z             },
2026-07-26T22:33:03.1467793Z             {
2026-07-26T22:33:03.1467917Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.1468003Z               "line": 1262
2026-07-26T22:33:03.1468084Z             },
2026-07-26T22:33:03.1468166Z             {
2026-07-26T22:33:03.1468279Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.1468370Z               "line": 1284
2026-07-26T22:33:03.1468448Z             },
2026-07-26T22:33:03.1468533Z             {
2026-07-26T22:33:03.1468642Z               "path": "crates/spt-daemon/src/effect.rs",
2026-07-26T22:33:03.1468728Z               "line": 1312
2026-07-26T22:33:03.1468815Z             }
2026-07-26T22:33:03.1468890Z           ]
2026-07-26T22:33:03.1469050Z         }
2026-07-26T22:33:03.1469122Z       }
2026-07-26T22:33:03.1469212Z     },
2026-07-26T22:33:03.1469392Z     {
2026-07-26T22:33:03.1469492Z       "id": "REQ-PAIR-1",
2026-07-26T22:33:03.1469592Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-07-26T22:33:03.1469692Z       "requiredStages": [
2026-07-26T22:33:03.1469774Z         "impl",
2026-07-26T22:33:03.1469860Z         "unit",
2026-07-26T22:33:03.1469935Z         "int"
2026-07-26T22:33:03.1470021Z       ],
2026-07-26T22:33:03.1470099Z       "stages": {
2026-07-26T22:33:03.1470189Z         "doc": {
2026-07-26T22:33:03.1470264Z           "complete": false,
2026-07-26T22:33:03.1470361Z           "evidence": []
2026-07-26T22:33:03.1470437Z         },
2026-07-26T22:33:03.1470522Z         "impl": {
2026-07-26T22:33:03.1470608Z           "complete": true,
2026-07-26T22:33:03.1470704Z           "evidence": [
2026-07-26T22:33:03.1470780Z             {
2026-07-26T22:33:03.1470922Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-07-26T22:33:03.1470995Z               "line": 27
2026-07-26T22:33:03.1471076Z             },
2026-07-26T22:33:03.1471155Z             {
2026-07-26T22:33:03.1471285Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-07-26T22:33:03.1471367Z               "line": 88
2026-07-26T22:33:03.1471465Z             },
2026-07-26T22:33:03.1471547Z             {
2026-07-26T22:33:03.1471672Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-07-26T22:33:03.1471753Z               "line": 110
2026-07-26T22:33:03.1471842Z             },
2026-07-26T22:33:03.1471922Z             {
2026-07-26T22:33:03.1472052Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-07-26T22:33:03.1472132Z               "line": 153
2026-07-26T22:33:03.1472218Z             },
2026-07-26T22:33:03.1472290Z             {
2026-07-26T22:33:03.1472415Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-07-26T22:33:03.1472514Z               "line": 182
2026-07-26T22:33:03.1472591Z             },
2026-07-26T22:33:03.1472672Z             {
2026-07-26T22:33:03.1472790Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-07-26T22:33:03.1472891Z               "line": 29
2026-07-26T22:33:03.1472968Z             },
2026-07-26T22:33:03.1473062Z             {
2026-07-26T22:33:03.1473200Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-07-26T22:33:03.1473302Z               "line": 31
2026-07-26T22:33:03.1473382Z             },
2026-07-26T22:33:03.1473463Z             {
2026-07-26T22:33:03.1473583Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-07-26T22:33:03.1473668Z               "line": 44
2026-07-26T22:33:03.1473754Z             },
2026-07-26T22:33:03.1473844Z             {
2026-07-26T22:33:03.1473964Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-07-26T22:33:03.1474068Z               "line": 171
2026-07-26T22:33:03.1474144Z             },
2026-07-26T22:33:03.1474225Z             {
2026-07-26T22:33:03.1474342Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-07-26T22:33:03.1474437Z               "line": 376
2026-07-26T22:33:03.1474518Z             }
2026-07-26T22:33:03.1474595Z           ]
2026-07-26T22:33:03.1474671Z         },
2026-07-26T22:33:03.1474857Z         "int": {
2026-07-26T22:33:03.1474943Z           "complete": true,
2026-07-26T22:33:03.1475033Z           "evidence": [
2026-07-26T22:33:03.1475113Z             {
2026-07-26T22:33:03.1475239Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.1475324Z               "line": 702
2026-07-26T22:33:03.1475419Z             },
2026-07-26T22:33:03.1475502Z             {
2026-07-26T22:33:03.1475620Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.1475700Z               "line": 1039
2026-07-26T22:33:03.1475782Z             }
2026-07-26T22:33:03.1475863Z           ]
2026-07-26T22:33:03.1475954Z         },
2026-07-26T22:33:03.1476039Z         "unit": {
2026-07-26T22:33:03.1476136Z           "complete": true,
2026-07-26T22:33:03.1476216Z           "evidence": [
2026-07-26T22:33:03.1476301Z             {
2026-07-26T22:33:03.1476503Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-07-26T22:33:03.1476597Z               "line": 236
2026-07-26T22:33:03.1476688Z             },
2026-07-26T22:33:03.1476775Z             {
2026-07-26T22:33:03.1476897Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-07-26T22:33:03.1476977Z               "line": 349
2026-07-26T22:33:03.1477063Z             },
2026-07-26T22:33:03.1477149Z             {
2026-07-26T22:33:03.1477281Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-07-26T22:33:03.1477371Z               "line": 194
2026-07-26T22:33:03.1477452Z             },
2026-07-26T22:33:03.1477534Z             {
2026-07-26T22:33:03.1477656Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-07-26T22:33:03.1477748Z               "line": 216
2026-07-26T22:33:03.1477839Z             },
2026-07-26T22:33:03.1477924Z             {
2026-07-26T22:33:03.1478049Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-07-26T22:33:03.1478134Z               "line": 230
2026-07-26T22:33:03.1478225Z             },
2026-07-26T22:33:03.1478305Z             {
2026-07-26T22:33:03.1478440Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-07-26T22:33:03.1478515Z               "line": 242
2026-07-26T22:33:03.1478605Z             },
2026-07-26T22:33:03.1478683Z             {
2026-07-26T22:33:03.1478811Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-07-26T22:33:03.1478892Z               "line": 256
2026-07-26T22:33:03.1479050Z             },
2026-07-26T22:33:03.1479131Z             {
2026-07-26T22:33:03.1479254Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-07-26T22:33:03.1479342Z               "line": 270
2026-07-26T22:33:03.1479427Z             },
2026-07-26T22:33:03.1479506Z             {
2026-07-26T22:33:03.1479625Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-07-26T22:33:03.1479706Z               "line": 277
2026-07-26T22:33:03.1479795Z             },
2026-07-26T22:33:03.1479880Z             {
2026-07-26T22:33:03.1479995Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-07-26T22:33:03.1480092Z               "line": 295
2026-07-26T22:33:03.1480166Z             },
2026-07-26T22:33:03.1480252Z             {
2026-07-26T22:33:03.1480377Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-07-26T22:33:03.1480458Z               "line": 968
2026-07-26T22:33:03.1480538Z             },
2026-07-26T22:33:03.1480620Z             {
2026-07-26T22:33:03.1480744Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-07-26T22:33:03.1480833Z               "line": 1051
2026-07-26T22:33:03.1480916Z             },
2026-07-26T22:33:03.1481011Z             {
2026-07-26T22:33:03.1481120Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-07-26T22:33:03.1481220Z               "line": 1121
2026-07-26T22:33:03.1481298Z             },
2026-07-26T22:33:03.1481382Z             {
2026-07-26T22:33:03.1481507Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-07-26T22:33:03.1481612Z               "line": 1182
2026-07-26T22:33:03.1481802Z             },
2026-07-26T22:33:03.1481875Z             {
2026-07-26T22:33:03.1481998Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-07-26T22:33:03.1482093Z               "line": 1238
2026-07-26T22:33:03.1482170Z             },
2026-07-26T22:33:03.1482261Z             {
2026-07-26T22:33:03.1482373Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-07-26T22:33:03.1482454Z               "line": 1457
2026-07-26T22:33:03.1482540Z             }
2026-07-26T22:33:03.1482632Z           ]
2026-07-26T22:33:03.1482707Z         }
2026-07-26T22:33:03.1482792Z       }
2026-07-26T22:33:03.1482874Z     },
2026-07-26T22:33:03.1482960Z     {
2026-07-26T22:33:03.1483055Z       "id": "REQ-PAIR-2",
2026-07-26T22:33:03.1483194Z       "title": "Local trust store with TOFU + warn-on-change",
2026-07-26T22:33:03.1483379Z       "requiredStages": [],
2026-07-26T22:33:03.1483475Z       "stages": {
2026-07-26T22:33:03.1483561Z         "doc": {
2026-07-26T22:33:03.1483656Z           "complete": false,
2026-07-26T22:33:03.1483756Z           "evidence": []
2026-07-26T22:33:03.1483838Z         },
2026-07-26T22:33:03.1483913Z         "impl": {
2026-07-26T22:33:03.1484013Z           "complete": false,
2026-07-26T22:33:03.1484110Z           "evidence": []
2026-07-26T22:33:03.1484187Z         },
2026-07-26T22:33:03.1484266Z         "int": {
2026-07-26T22:33:03.1484366Z           "complete": false,
2026-07-26T22:33:03.1484448Z           "evidence": []
2026-07-26T22:33:03.1484525Z         },
2026-07-26T22:33:03.1484609Z         "unit": {
2026-07-26T22:33:03.1484708Z           "complete": false,
2026-07-26T22:33:03.1484799Z           "evidence": []
2026-07-26T22:33:03.1484874Z         }
2026-07-26T22:33:03.1484950Z       }
2026-07-26T22:33:03.1485030Z     },
2026-07-26T22:33:03.1485112Z     {
2026-07-26T22:33:03.1485213Z       "id": "REQ-PAIR-3",
2026-07-26T22:33:03.1485359Z       "title": "Fetch current pairing code from any paired node",
2026-07-26T22:33:03.1485456Z       "requiredStages": [
2026-07-26T22:33:03.1485551Z         "impl",
2026-07-26T22:33:03.1485626Z         "unit"
2026-07-26T22:33:03.1485708Z       ],
2026-07-26T22:33:03.1485789Z       "stages": {
2026-07-26T22:33:03.1485879Z         "doc": {
2026-07-26T22:33:03.1485970Z           "complete": false,
2026-07-26T22:33:03.1486066Z           "evidence": []
2026-07-26T22:33:03.1486147Z         },
2026-07-26T22:33:03.1486237Z         "impl": {
2026-07-26T22:33:03.1486327Z           "complete": true,
2026-07-26T22:33:03.1486410Z           "evidence": [
2026-07-26T22:33:03.1486494Z             {
2026-07-26T22:33:03.1486595Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1486676Z               "line": 7604
2026-07-26T22:33:03.1486762Z             },
2026-07-26T22:33:03.1486847Z             {
2026-07-26T22:33:03.1486952Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1487049Z               "line": 7673
2026-07-26T22:33:03.1487133Z             },
2026-07-26T22:33:03.1487219Z             {
2026-07-26T22:33:03.1487330Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1487448Z               "line": 8054
2026-07-26T22:33:03.1487538Z             },
2026-07-26T22:33:03.1487619Z             {
2026-07-26T22:33:03.1487728Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1487817Z               "line": 9621
2026-07-26T22:33:03.1487921Z             }
2026-07-26T22:33:03.1488003Z           ]
2026-07-26T22:33:03.1488094Z         },
2026-07-26T22:33:03.1488174Z         "int": {
2026-07-26T22:33:03.1488269Z           "complete": false,
2026-07-26T22:33:03.1488361Z           "evidence": []
2026-07-26T22:33:03.1488446Z         },
2026-07-26T22:33:03.1488522Z         "unit": {
2026-07-26T22:33:03.1488624Z           "complete": true,
2026-07-26T22:33:03.1488714Z           "evidence": [
2026-07-26T22:33:03.1488803Z             {
2026-07-26T22:33:03.1488899Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1489052Z               "line": 18045
2026-07-26T22:33:03.1489133Z             },
2026-07-26T22:33:03.1489329Z             {
2026-07-26T22:33:03.1489428Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1492807Z               "line": 18321
2026-07-26T22:33:03.1492910Z             },
2026-07-26T22:33:03.1492995Z             {
2026-07-26T22:33:03.1493168Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1493272Z               "line": 19417
2026-07-26T22:33:03.1493353Z             },
2026-07-26T22:33:03.1493429Z             {
2026-07-26T22:33:03.1493535Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1493634Z               "line": 19436
2026-07-26T22:33:03.1493716Z             },
2026-07-26T22:33:03.1493802Z             {
2026-07-26T22:33:03.1493906Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1494001Z               "line": 19460
2026-07-26T22:33:03.1494240Z             },
2026-07-26T22:33:03.1494316Z             {
2026-07-26T22:33:03.1494427Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1494521Z               "line": 19479
2026-07-26T22:33:03.1494597Z             },
2026-07-26T22:33:03.1494680Z             {
2026-07-26T22:33:03.1494779Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1494869Z               "line": 19492
2026-07-26T22:33:03.1494955Z             },
2026-07-26T22:33:03.1495038Z             {
2026-07-26T22:33:03.1495136Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1495226Z               "line": 19501
2026-07-26T22:33:03.1495312Z             }
2026-07-26T22:33:03.1495393Z           ]
2026-07-26T22:33:03.1495467Z         }
2026-07-26T22:33:03.1495553Z       }
2026-07-26T22:33:03.1495634Z     },
2026-07-26T22:33:03.1495715Z     {
2026-07-26T22:33:03.1495801Z       "id": "REQ-PAIR-4",
2026-07-26T22:33:03.1495914Z       "title": "Subnet naming on first pairing",
2026-07-26T22:33:03.1496025Z       "requiredStages": [
2026-07-26T22:33:03.1496106Z         "impl",
2026-07-26T22:33:03.1496191Z         "unit"
2026-07-26T22:33:03.1496268Z       ],
2026-07-26T22:33:03.1496354Z       "stages": {
2026-07-26T22:33:03.1496431Z         "doc": {
2026-07-26T22:33:03.1496530Z           "complete": false,
2026-07-26T22:33:03.1496622Z           "evidence": []
2026-07-26T22:33:03.1496707Z         },
2026-07-26T22:33:03.1496787Z         "impl": {
2026-07-26T22:33:03.1496887Z           "complete": true,
2026-07-26T22:33:03.1496970Z           "evidence": [
2026-07-26T22:33:03.1497054Z             {
2026-07-26T22:33:03.1497174Z               "path": "crates/spt-store/src/subnet.rs",
2026-07-26T22:33:03.1497270Z               "line": 174
2026-07-26T22:33:03.1497350Z             }
2026-07-26T22:33:03.1497431Z           ]
2026-07-26T22:33:03.1497512Z         },
2026-07-26T22:33:03.1497600Z         "int": {
2026-07-26T22:33:03.1497693Z           "complete": false,
2026-07-26T22:33:03.1497779Z           "evidence": []
2026-07-26T22:33:03.1497866Z         },
2026-07-26T22:33:03.1497957Z         "unit": {
2026-07-26T22:33:03.1498046Z           "complete": true,
2026-07-26T22:33:03.1498135Z           "evidence": [
2026-07-26T22:33:03.1498207Z             {
2026-07-26T22:33:03.1498339Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-07-26T22:33:03.1498429Z               "line": 1294
2026-07-26T22:33:03.1498506Z             }
2026-07-26T22:33:03.1498587Z           ]
2026-07-26T22:33:03.1498668Z         }
2026-07-26T22:33:03.1498749Z       }
2026-07-26T22:33:03.1498830Z     },
2026-07-26T22:33:03.1498911Z     {
2026-07-26T22:33:03.1499092Z       "id": "REQ-PAIR-5",
2026-07-26T22:33:03.1499383Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-07-26T22:33:03.1499483Z       "requiredStages": [
2026-07-26T22:33:03.1499565Z         "impl",
2026-07-26T22:33:03.1499655Z         "unit",
2026-07-26T22:33:03.1499740Z         "int"
2026-07-26T22:33:03.1499823Z       ],
2026-07-26T22:33:03.1499908Z       "stages": {
2026-07-26T22:33:03.1499993Z         "doc": {
2026-07-26T22:33:03.1500089Z           "complete": false,
2026-07-26T22:33:03.1500279Z           "evidence": []
2026-07-26T22:33:03.1500361Z         },
2026-07-26T22:33:03.1500438Z         "impl": {
2026-07-26T22:33:03.1500538Z           "complete": true,
2026-07-26T22:33:03.1500618Z           "evidence": [
2026-07-26T22:33:03.1500693Z             {
2026-07-26T22:33:03.1500817Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-07-26T22:33:03.1500915Z               "line": 44
2026-07-26T22:33:03.1501000Z             },
2026-07-26T22:33:03.1501072Z             {
2026-07-26T22:33:03.1501192Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-07-26T22:33:03.1501273Z               "line": 96
2026-07-26T22:33:03.1501348Z             },
2026-07-26T22:33:03.1501431Z             {
2026-07-26T22:33:03.1501550Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-07-26T22:33:03.1501736Z               "line": 107
2026-07-26T22:33:03.1501812Z             },
2026-07-26T22:33:03.1501907Z             {
2026-07-26T22:33:03.1502031Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-07-26T22:33:03.1502122Z               "line": 124
2026-07-26T22:33:03.1502197Z             },
2026-07-26T22:33:03.1502278Z             {
2026-07-26T22:33:03.1502399Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-07-26T22:33:03.1502493Z               "line": 155
2026-07-26T22:33:03.1502574Z             },
2026-07-26T22:33:03.1502651Z             {
2026-07-26T22:33:03.1502775Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-07-26T22:33:03.1502855Z               "line": 195
2026-07-26T22:33:03.1502936Z             },
2026-07-26T22:33:03.1503019Z             {
2026-07-26T22:33:03.1503141Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-07-26T22:33:03.1503232Z               "line": 251
2026-07-26T22:33:03.1503319Z             },
2026-07-26T22:33:03.1503400Z             {
2026-07-26T22:33:03.1503517Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-07-26T22:33:03.1503612Z               "line": 273
2026-07-26T22:33:03.1503694Z             },
2026-07-26T22:33:03.1503776Z             {
2026-07-26T22:33:03.1503913Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-07-26T22:33:03.1503990Z               "line": 33
2026-07-26T22:33:03.1504066Z             },
2026-07-26T22:33:03.1504147Z             {
2026-07-26T22:33:03.1504286Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-07-26T22:33:03.1504367Z               "line": 45
2026-07-26T22:33:03.1504448Z             },
2026-07-26T22:33:03.1504528Z             {
2026-07-26T22:33:03.1504663Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-07-26T22:33:03.1504742Z               "line": 59
2026-07-26T22:33:03.1504828Z             },
2026-07-26T22:33:03.1504905Z             {
2026-07-26T22:33:03.1505039Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-07-26T22:33:03.1505120Z               "line": 376
2026-07-26T22:33:03.1505201Z             }
2026-07-26T22:33:03.1505287Z           ]
2026-07-26T22:33:03.1505368Z         },
2026-07-26T22:33:03.1505453Z         "int": {
2026-07-26T22:33:03.1505549Z           "complete": true,
2026-07-26T22:33:03.1505626Z           "evidence": [
2026-07-26T22:33:03.1505710Z             {
2026-07-26T22:33:03.1505833Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.1505924Z               "line": 1039
2026-07-26T22:33:03.1506009Z             },
2026-07-26T22:33:03.1506089Z             {
2026-07-26T22:33:03.1506213Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-07-26T22:33:03.1506309Z               "line": 360
2026-07-26T22:33:03.1506389Z             }
2026-07-26T22:33:03.1506465Z           ]
2026-07-26T22:33:03.1506537Z         },
2026-07-26T22:33:03.1506619Z         "unit": {
2026-07-26T22:33:03.1506713Z           "complete": true,
2026-07-26T22:33:03.1506808Z           "evidence": [
2026-07-26T22:33:03.1506881Z             {
2026-07-26T22:33:03.1507085Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-07-26T22:33:03.1507172Z               "line": 311
2026-07-26T22:33:03.1507257Z             },
2026-07-26T22:33:03.1507343Z             {
2026-07-26T22:33:03.1507467Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-07-26T22:33:03.1507554Z               "line": 322
2026-07-26T22:33:03.1507634Z             },
2026-07-26T22:33:03.1507715Z             {
2026-07-26T22:33:03.1507830Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-07-26T22:33:03.1507924Z               "line": 424
2026-07-26T22:33:03.1508010Z             },
2026-07-26T22:33:03.1508097Z             {
2026-07-26T22:33:03.1508230Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-07-26T22:33:03.1508316Z               "line": 72
2026-07-26T22:33:03.1508465Z             },
2026-07-26T22:33:03.1508550Z             {
2026-07-26T22:33:03.1508672Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-07-26T22:33:03.1508763Z               "line": 82
2026-07-26T22:33:03.1508844Z             },
2026-07-26T22:33:03.1508927Z             {
2026-07-26T22:33:03.1509142Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-07-26T22:33:03.1509237Z               "line": 100
2026-07-26T22:33:03.1509313Z             },
2026-07-26T22:33:03.1509409Z             {
2026-07-26T22:33:03.1509534Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-07-26T22:33:03.1509628Z               "line": 110
2026-07-26T22:33:03.1509705Z             },
2026-07-26T22:33:03.1509791Z             {
2026-07-26T22:33:03.1509914Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-07-26T22:33:03.1509995Z               "line": 125
2026-07-26T22:33:03.1510073Z             },
2026-07-26T22:33:03.1510162Z             {
2026-07-26T22:33:03.1510282Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-07-26T22:33:03.1510383Z               "line": 1044
2026-07-26T22:33:03.1510463Z             },
2026-07-26T22:33:03.1510544Z             {
2026-07-26T22:33:03.1510669Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-07-26T22:33:03.1510759Z               "line": 1110
2026-07-26T22:33:03.1510834Z             },
2026-07-26T22:33:03.1510921Z             {
2026-07-26T22:33:03.1511041Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-07-26T22:33:03.1511126Z               "line": 1357
2026-07-26T22:33:03.1511206Z             }
2026-07-26T22:33:03.1511281Z           ]
2026-07-26T22:33:03.1511358Z         }
2026-07-26T22:33:03.1511433Z       }
2026-07-26T22:33:03.1511513Z     },
2026-07-26T22:33:03.1511603Z     {
2026-07-26T22:33:03.1511685Z       "id": "REQ-PAIR-6",
2026-07-26T22:33:03.1511956Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-07-26T22:33:03.1512067Z       "requiredStages": [
2026-07-26T22:33:03.1512147Z         "impl",
2026-07-26T22:33:03.1512233Z         "unit"
2026-07-26T22:33:03.1512311Z       ],
2026-07-26T22:33:03.1512396Z       "stages": {
2026-07-26T22:33:03.1512472Z         "doc": {
2026-07-26T22:33:03.1512572Z           "complete": false,
2026-07-26T22:33:03.1512653Z           "evidence": []
2026-07-26T22:33:03.1512739Z         },
2026-07-26T22:33:03.1512819Z         "impl": {
2026-07-26T22:33:03.1512910Z           "complete": true,
2026-07-26T22:33:03.1512992Z           "evidence": [
2026-07-26T22:33:03.1513077Z             {
2026-07-26T22:33:03.1513177Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1513274Z               "line": 7673
2026-07-26T22:33:03.1513354Z             },
2026-07-26T22:33:03.1513440Z             {
2026-07-26T22:33:03.1513531Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1513627Z               "line": 8054
2026-07-26T22:33:03.1513716Z             },
2026-07-26T22:33:03.1513802Z             {
2026-07-26T22:33:03.1513918Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.1514096Z               "line": 18
2026-07-26T22:33:03.1514173Z             },
2026-07-26T22:33:03.1514254Z             {
2026-07-26T22:33:03.1514364Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.1514458Z               "line": 49
2026-07-26T22:33:03.1514536Z             },
2026-07-26T22:33:03.1514622Z             {
2026-07-26T22:33:03.1514721Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.1514816Z               "line": 318
2026-07-26T22:33:03.1514889Z             }
2026-07-26T22:33:03.1514960Z           ]
2026-07-26T22:33:03.1515050Z         },
2026-07-26T22:33:03.1515131Z         "int": {
2026-07-26T22:33:03.1515223Z           "complete": false,
2026-07-26T22:33:03.1515312Z           "evidence": []
2026-07-26T22:33:03.1515398Z         },
2026-07-26T22:33:03.1515480Z         "unit": {
2026-07-26T22:33:03.1515661Z           "complete": true,
2026-07-26T22:33:03.1515761Z           "evidence": [
2026-07-26T22:33:03.1515838Z             {
2026-07-26T22:33:03.1515951Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1516023Z               "line": 19514
2026-07-26T22:33:03.1516104Z             },
2026-07-26T22:33:03.1516191Z             {
2026-07-26T22:33:03.1516289Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1516384Z               "line": 19531
2026-07-26T22:33:03.1516465Z             },
2026-07-26T22:33:03.1516546Z             {
2026-07-26T22:33:03.1516658Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.1516749Z               "line": 383
2026-07-26T22:33:03.1516826Z             },
2026-07-26T22:33:03.1516908Z             {
2026-07-26T22:33:03.1517006Z               "path": "crates/spt/src/elevation.rs",
2026-07-26T22:33:03.1517093Z               "line": 392
2026-07-26T22:33:03.1517169Z             }
2026-07-26T22:33:03.1517250Z           ]
2026-07-26T22:33:03.1517326Z         }
2026-07-26T22:33:03.1517408Z       }
2026-07-26T22:33:03.1517484Z     },
2026-07-26T22:33:03.1517574Z     {
2026-07-26T22:33:03.1517669Z       "id": "REQ-PAIR-7",
2026-07-26T22:33:03.1517827Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-07-26T22:33:03.1517922Z       "requiredStages": [],
2026-07-26T22:33:03.1518008Z       "stages": {
2026-07-26T22:33:03.1518085Z         "doc": {
2026-07-26T22:33:03.1518174Z           "complete": false,
2026-07-26T22:33:03.1518251Z           "evidence": []
2026-07-26T22:33:03.1518332Z         },
2026-07-26T22:33:03.1518419Z         "impl": {
2026-07-26T22:33:03.1518513Z           "complete": false,
2026-07-26T22:33:03.1518589Z           "evidence": []
2026-07-26T22:33:03.1518672Z         },
2026-07-26T22:33:03.1518753Z         "int": {
2026-07-26T22:33:03.1518846Z           "complete": false,
2026-07-26T22:33:03.1518928Z           "evidence": []
2026-07-26T22:33:03.1519096Z         },
2026-07-26T22:33:03.1519180Z         "unit": {
2026-07-26T22:33:03.1519261Z           "complete": false,
2026-07-26T22:33:03.1519342Z           "evidence": []
2026-07-26T22:33:03.1519427Z         }
2026-07-26T22:33:03.1519511Z       }
2026-07-26T22:33:03.1519592Z     },
2026-07-26T22:33:03.1519674Z     {
2026-07-26T22:33:03.1519770Z       "id": "REQ-PAIR-8",
2026-07-26T22:33:03.1521051Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-07-26T22:33:03.1521151Z       "requiredStages": [
2026-07-26T22:33:03.1521234Z         "impl",
2026-07-26T22:33:03.1521315Z         "unit"
2026-07-26T22:33:03.1521399Z       ],
2026-07-26T22:33:03.1521486Z       "stages": {
2026-07-26T22:33:03.1521572Z         "doc": {
2026-07-26T22:33:03.1521662Z           "complete": false,
2026-07-26T22:33:03.1521871Z           "evidence": []
2026-07-26T22:33:03.1521952Z         },
2026-07-26T22:33:03.1522035Z         "impl": {
2026-07-26T22:33:03.1522125Z           "complete": true,
2026-07-26T22:33:03.1522211Z           "evidence": [
2026-07-26T22:33:03.1522279Z             {
2026-07-26T22:33:03.1522412Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.1522493Z               "line": 732
2026-07-26T22:33:03.1522570Z             },
2026-07-26T22:33:03.1522651Z             {
2026-07-26T22:33:03.1522774Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:03.1522866Z               "line": 34
2026-07-26T22:33:03.1522951Z             },
2026-07-26T22:33:03.1523032Z             {
2026-07-26T22:33:03.1523161Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:03.1523251Z               "line": 101
2026-07-26T22:33:03.1523422Z             }
2026-07-26T22:33:03.1523500Z           ]
2026-07-26T22:33:03.1523585Z         },
2026-07-26T22:33:03.1523666Z         "int": {
2026-07-26T22:33:03.1523766Z           "complete": false,
2026-07-26T22:33:03.1523853Z           "evidence": []
2026-07-26T22:33:03.1523933Z         },
2026-07-26T22:33:03.1524009Z         "unit": {
2026-07-26T22:33:03.1524105Z           "complete": true,
2026-07-26T22:33:03.1524177Z           "evidence": [
2026-07-26T22:33:03.1524261Z             {
2026-07-26T22:33:03.1524386Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:03.1524473Z               "line": 363
2026-07-26T22:33:03.1524553Z             },
2026-07-26T22:33:03.1524628Z             {
2026-07-26T22:33:03.1524752Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:03.1524839Z               "line": 375
2026-07-26T22:33:03.1524910Z             },
2026-07-26T22:33:03.1524990Z             {
2026-07-26T22:33:03.1525115Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:03.1525205Z               "line": 428
2026-07-26T22:33:03.1525286Z             },
2026-07-26T22:33:03.1525372Z             {
2026-07-26T22:33:03.1525492Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:03.1525573Z               "line": 444
2026-07-26T22:33:03.1525657Z             }
2026-07-26T22:33:03.1525740Z           ]
2026-07-26T22:33:03.1525816Z         }
2026-07-26T22:33:03.1525897Z       }
2026-07-26T22:33:03.1525991Z     },
2026-07-26T22:33:03.1526065Z     {
2026-07-26T22:33:03.1526173Z       "id": "REQ-PAIR-NTP-LOUD-FAIL",
2026-07-26T22:33:03.1528306Z       "title": "W1/D2 (JOIN-TRUTH): total NTP failure (no server on any family answered) is LOUD, not silent — a node running the ceremony on its raw skewed system clock must be visible. ROOT: current_offset_secs (ntp.rs) does `query_offset_secs().unwrap_or(0)` and eprintln's ONLY on a nonzero success, so an all-servers-unreachable refresh is indistinguishable from 'clock agrees'. Fix: log the TRANSITION into all-servers-failed once per refresh (suggested `NTP_TOTP_UNCORRECTED: all NTP servers unreachable — ceremony clock = raw system clock`) and the recovery transition back to corrected; the OFFSET_TTL already bounds refresh cadence so no per-call spam. Fallback behavior (offset 0 → system clock) is UNCHANGED — this adds observability only.",
2026-07-26T22:33:03.1528425Z       "requiredStages": [
2026-07-26T22:33:03.1528506Z         "impl",
2026-07-26T22:33:03.1528597Z         "unit"
2026-07-26T22:33:03.1528683Z       ],
2026-07-26T22:33:03.1528759Z       "stages": {
2026-07-26T22:33:03.1528844Z         "doc": {
2026-07-26T22:33:03.1529031Z           "complete": false,
2026-07-26T22:33:03.1529117Z           "evidence": []
2026-07-26T22:33:03.1529203Z         },
2026-07-26T22:33:03.1529285Z         "impl": {
2026-07-26T22:33:03.1529374Z           "complete": true,
2026-07-26T22:33:03.1529460Z           "evidence": [
2026-07-26T22:33:03.1529542Z             {
2026-07-26T22:33:03.1529675Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:03.1529764Z               "line": 138
2026-07-26T22:33:03.1529955Z             },
2026-07-26T22:33:03.1530039Z             {
2026-07-26T22:33:03.1530157Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:03.1530238Z               "line": 214
2026-07-26T22:33:03.1530320Z             }
2026-07-26T22:33:03.1530395Z           ]
2026-07-26T22:33:03.1530472Z         },
2026-07-26T22:33:03.1530549Z         "int": {
2026-07-26T22:33:03.1530644Z           "complete": false,
2026-07-26T22:33:03.1530734Z           "evidence": []
2026-07-26T22:33:03.1530815Z         },
2026-07-26T22:33:03.1530897Z         "unit": {
2026-07-26T22:33:03.1530993Z           "complete": true,
2026-07-26T22:33:03.1531082Z           "evidence": [
2026-07-26T22:33:03.1531169Z             {
2026-07-26T22:33:03.1531287Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:03.1531474Z               "line": 458
2026-07-26T22:33:03.1531555Z             }
2026-07-26T22:33:03.1531640Z           ]
2026-07-26T22:33:03.1531721Z         }
2026-07-26T22:33:03.1531808Z       }
2026-07-26T22:33:03.1531880Z     },
2026-07-26T22:33:03.1531964Z     {
2026-07-26T22:33:03.1532070Z       "id": "REQ-PAIR-NTP-MULTIHOME",
2026-07-26T22:33:03.1534756Z       "title": "W1/D1 (JOIN-TRUTH): the ceremony NTP query reaches a server on EITHER IP family — `query_unix_secs` (ntp.rs) must iterate every address `to_socket_addrs()` resolves (not just the first) and bind a socket of the matching family per candidate (IPv4 addr → bind 0.0.0.0:0; IPv6 addr → bind [::]:0), first successful answer wins. ROOT (proven 3/3-FAIL via our exact code on enlyzeam): today `UdpSocket::bind((\"0.0.0.0\",0))` is v4-only and `send_to(&packet, server)` sends ONLY to the FIRST resolved addr — time.google.com resolves 4×AAAA before any A on a v6-first dual-stack box → the primary server is PERMANENTLY unreachable via our code (w32tm reaches it over v6), silently halving NTP redundancy (pool.ntp.org v4 carried everything; a DNS rotation making BOTH v6-first would zero it). Fix keeps the lazy-cache/TTL/fallback contract of REQ-PAIR-8 unchanged — only the socket/resolve leg changes.",
2026-07-26T22:33:03.1534860Z       "requiredStages": [
2026-07-26T22:33:03.1534941Z         "impl",
2026-07-26T22:33:03.1535024Z         "unit"
2026-07-26T22:33:03.1535104Z       ],
2026-07-26T22:33:03.1535193Z       "stages": {
2026-07-26T22:33:03.1535273Z         "doc": {
2026-07-26T22:33:03.1535370Z           "complete": false,
2026-07-26T22:33:03.1535447Z           "evidence": []
2026-07-26T22:33:03.1535536Z         },
2026-07-26T22:33:03.1535622Z         "impl": {
2026-07-26T22:33:03.1535728Z           "complete": true,
2026-07-26T22:33:03.1535804Z           "evidence": [
2026-07-26T22:33:03.1535884Z             {
2026-07-26T22:33:03.1536009Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:03.1536095Z               "line": 262
2026-07-26T22:33:03.1536194Z             },
2026-07-26T22:33:03.1536266Z             {
2026-07-26T22:33:03.1536390Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:03.1536485Z               "line": 276
2026-07-26T22:33:03.1536571Z             },
2026-07-26T22:33:03.1536644Z             {
2026-07-26T22:33:03.1536771Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:03.1536847Z               "line": 284
2026-07-26T22:33:03.1536930Z             },
2026-07-26T22:33:03.1537015Z             {
2026-07-26T22:33:03.1537138Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:03.1537220Z               "line": 302
2026-07-26T22:33:03.1537311Z             }
2026-07-26T22:33:03.1537391Z           ]
2026-07-26T22:33:03.1537481Z         },
2026-07-26T22:33:03.1537571Z         "int": {
2026-07-26T22:33:03.1537666Z           "complete": false,
2026-07-26T22:33:03.1537746Z           "evidence": []
2026-07-26T22:33:03.1537821Z         },
2026-07-26T22:33:03.1537908Z         "unit": {
2026-07-26T22:33:03.1537994Z           "complete": true,
2026-07-26T22:33:03.1538084Z           "evidence": [
2026-07-26T22:33:03.1538251Z             {
2026-07-26T22:33:03.1538375Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:03.1538465Z               "line": 391
2026-07-26T22:33:03.1538538Z             },
2026-07-26T22:33:03.1538628Z             {
2026-07-26T22:33:03.1538746Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-07-26T22:33:03.1538838Z               "line": 410
2026-07-26T22:33:03.1538928Z             }
2026-07-26T22:33:03.1539114Z           ]
2026-07-26T22:33:03.1539186Z         }
2026-07-26T22:33:03.1539271Z       }
2026-07-26T22:33:03.1539357Z     },
2026-07-26T22:33:03.1539438Z     {
2026-07-26T22:33:03.1539539Z       "id": "REQ-PEER-PUMP-CHURN-STALL",
2026-07-26T22:33:03.1541748Z       "title": "B5 (F028, perri F-a; DEFECT daemon, OBSERVED-ONCE, HIGH): the peer pump STALLS under rapid rc attach/EOF-detach/--take churn. Fresh 0.22.0 daemon ~10min after restart, during rapid rc cycling: `peer pump: STALLED (last tick 122s)`; while stalled `spt rc --view` -> `RC_FAIL: attach request: brain IPC read deadline elapsed` (repeatable) and controlled-clear stopped propagating. Daemon restart recovered + endpoints auto-revived. Prior class: REQ-HAZARD-PUMP-IPC-DEADLINE (reader-thread+channel carrier), REQ-broker-QUIC-deadline (bounded_block_on) — something in the rc-churn path can still wedge the pump tick. perri holds exact timestamps + a repro candidate (rapid attach/detach/take against one endpoint) — REQUEST before RCA. See triage B5.",
2026-07-26T22:33:03.1541947Z       "requiredStages": [],
2026-07-26T22:33:03.1542034Z       "stages": {
2026-07-26T22:33:03.1542120Z         "doc": {
2026-07-26T22:33:03.1542209Z           "complete": false,
2026-07-26T22:33:03.1542305Z           "evidence": []
2026-07-26T22:33:03.1542387Z         },
2026-07-26T22:33:03.1542473Z         "impl": {
2026-07-26T22:33:03.1542558Z           "complete": false,
2026-07-26T22:33:03.1542639Z           "evidence": []
2026-07-26T22:33:03.1542721Z         },
2026-07-26T22:33:03.1542815Z         "int": {
2026-07-26T22:33:03.1542900Z           "complete": false,
2026-07-26T22:33:03.1542991Z           "evidence": []
2026-07-26T22:33:03.1543072Z         },
2026-07-26T22:33:03.1543160Z         "unit": {
2026-07-26T22:33:03.1543251Z           "complete": false,
2026-07-26T22:33:03.1543341Z           "evidence": []
2026-07-26T22:33:03.1543428Z         }
2026-07-26T22:33:03.1543508Z       }
2026-07-26T22:33:03.1543584Z     },
2026-07-26T22:33:03.1543676Z     {
2026-07-26T22:33:03.1543776Z       "id": "REQ-PEER-ROUTE-CHAIN",
2026-07-26T22:33:03.1547829Z       "title": "MESH-RECOVERY W1 (ADR-0039, RCA wave 1): dial-address resolution is the ROUTE CHAIN — exact peer-cache entry, then VALIDATED RosterEntry.address (address.id must match the peer key; a poison row never becomes a route), then id-only discovery — always fully consulted in order (no failure-count heuristics gating legs; rotation machinery REJECTED). Retention is NONDESTRUCTIVE: PRESENCE_DIAL_FAILED demotes the cached route to suspect (skipped in favor of the roster leg while suspect, superseded by any validated fresher address from connect write-back or reconcile), never deletes a sole route; removal only via validated-fresher replacement or roster tombstone. Validated roster addresses RECONCILE into the cache at daemon startup and on roster merge (beyond gapfill's fill-only: validated-fresher replaces failed/suspect rows) — recovery is connection-independent. Amends REQ-CONV-1's drop-on-fail mechanism; peeraddrs.rs/pump doc-comment truth rides the same change. Gate: impl — chain + demote + reconcile; unit — chain order incl. id-mismatch roster row resolves nothing + suspect row survives N failures with no replacement + reconcile replaces suspect with validated-fresher; int — rides REQ-HAZARD-MESH-BOOTSTRAP-TRAP D-legs; doc — ADR-0039 + CONTEXT peer-route chain entry. Kin REQ-PEERADDR-INVARIANT, REQ-CONV-1.",
2026-07-26T22:33:03.1547960Z       "requiredStages": [
2026-07-26T22:33:03.1548050Z         "doc",
2026-07-26T22:33:03.1548245Z         "impl",
2026-07-26T22:33:03.1548334Z         "unit",
2026-07-26T22:33:03.1548420Z         "int"
2026-07-26T22:33:03.1548501Z       ],
2026-07-26T22:33:03.1548588Z       "stages": {
2026-07-26T22:33:03.1548677Z         "doc": {
2026-07-26T22:33:03.1548768Z           "complete": true,
2026-07-26T22:33:03.1548855Z           "evidence": [
2026-07-26T22:33:03.1548925Z             {
2026-07-26T22:33:03.1549169Z               "path": "docs/adr/0039-peer-route-resolution-truth.md",
2026-07-26T22:33:03.1549245Z               "line": 45
2026-07-26T22:33:03.1549325Z             }
2026-07-26T22:33:03.1549408Z           ]
2026-07-26T22:33:03.1549493Z         },
2026-07-26T22:33:03.1549579Z         "impl": {
2026-07-26T22:33:03.1549674Z           "complete": true,
2026-07-26T22:33:03.1549756Z           "evidence": [
2026-07-26T22:33:03.1549841Z             {
2026-07-26T22:33:03.1550052Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.1550137Z               "line": 968
2026-07-26T22:33:03.1550227Z             },
2026-07-26T22:33:03.1550313Z             {
2026-07-26T22:33:03.1550433Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.1550518Z               "line": 1050
2026-07-26T22:33:03.1550594Z             },
2026-07-26T22:33:03.1550681Z             {
2026-07-26T22:33:03.1550795Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.1550884Z               "line": 1091
2026-07-26T22:33:03.1550960Z             },
2026-07-26T22:33:03.1551037Z             {
2026-07-26T22:33:03.1551159Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.1551253Z               "line": 1122
2026-07-26T22:33:03.1551330Z             },
2026-07-26T22:33:03.1551412Z             {
2026-07-26T22:33:03.1551535Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1551620Z               "line": 935
2026-07-26T22:33:03.1551708Z             },
2026-07-26T22:33:03.1551793Z             {
2026-07-26T22:33:03.1551921Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-07-26T22:33:03.1552017Z               "line": 117
2026-07-26T22:33:03.1552103Z             },
2026-07-26T22:33:03.1552183Z             {
2026-07-26T22:33:03.1552308Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-07-26T22:33:03.1552403Z               "line": 163
2026-07-26T22:33:03.1552489Z             },
2026-07-26T22:33:03.1552570Z             {
2026-07-26T22:33:03.1552704Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-07-26T22:33:03.1552779Z               "line": 194
2026-07-26T22:33:03.1552865Z             }
2026-07-26T22:33:03.1552947Z           ]
2026-07-26T22:33:03.1553028Z         },
2026-07-26T22:33:03.1553113Z         "int": {
2026-07-26T22:33:03.1553214Z           "complete": true,
2026-07-26T22:33:03.1553296Z           "evidence": [
2026-07-26T22:33:03.1553394Z             {
2026-07-26T22:33:03.1553522Z               "path": "crates/spt-daemon/tests/mesh_recovery.rs",
2026-07-26T22:33:03.1553632Z               "line": 208
2026-07-26T22:33:03.1553716Z             },
2026-07-26T22:33:03.1553796Z             {
2026-07-26T22:33:03.1553921Z               "path": "crates/spt-daemon/tests/mesh_recovery.rs",
2026-07-26T22:33:03.1554017Z               "line": 285
2026-07-26T22:33:03.1554082Z             }
2026-07-26T22:33:03.1554168Z           ]
2026-07-26T22:33:03.1554251Z         },
2026-07-26T22:33:03.1554336Z         "unit": {
2026-07-26T22:33:03.1554430Z           "complete": true,
2026-07-26T22:33:03.1554527Z           "evidence": [
2026-07-26T22:33:03.1554608Z             {
2026-07-26T22:33:03.1554731Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.1554812Z               "line": 1875
2026-07-26T22:33:03.1554889Z             },
2026-07-26T22:33:03.1554969Z             {
2026-07-26T22:33:03.1555093Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.1555195Z               "line": 1970
2026-07-26T22:33:03.1555289Z             },
2026-07-26T22:33:03.1555495Z             {
2026-07-26T22:33:03.1555632Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1555718Z               "line": 1162
2026-07-26T22:33:03.1555810Z             },
2026-07-26T22:33:03.1555891Z             {
2026-07-26T22:33:03.1556009Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-07-26T22:33:03.1556091Z               "line": 275
2026-07-26T22:33:03.1556168Z             },
2026-07-26T22:33:03.1556247Z             {
2026-07-26T22:33:03.1556366Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-07-26T22:33:03.1556456Z               "line": 327
2026-07-26T22:33:03.1556538Z             }
2026-07-26T22:33:03.1556628Z           ]
2026-07-26T22:33:03.1556704Z         }
2026-07-26T22:33:03.1556790Z       }
2026-07-26T22:33:03.1556867Z     },
2026-07-26T22:33:03.1556947Z     {
2026-07-26T22:33:03.1557125Z       "id": "REQ-PEERADDR-INVARIANT",
2026-07-26T22:33:03.1560297Z       "title": "MESH-RECOVERY W1 (ADR-0039, RCA wave 2): the peer-addrs cache INVARIANT — outer peer key == address.id — is ENFORCED on load and on write: invalid rows are repaired from the current roster when possible, rejected (dropped loudly) otherwise; never silently kept, never used as a route. MIGRATION = rebuild invalid rows from roster on first post-upgrade load; bare-deleting peer-addrs.json is REJECTED (cold recovery depends on the id-only path staying BEHIND warm routes — nuking every warm route trades one trap for another). gapfill_peeraddrs and PeerAddrStore::put stop accepting mismatched mappings (the live 5ff…-outer poison-row class on both incident nodes). Absent/corrupt-degrades-empty behavior untouched. Gate: impl — load/write enforcement + repair + migration; unit — mismatch rejected on put, repaired-or-dropped on load, valid rows untouched by migration, gapfill refuses a mismatched roster entry; doc — ADR-0039. Kin REQ-PEER-ROUTE-CHAIN, REQ-MESH-2 (gapfill), REQ-CONV-1.",
2026-07-26T22:33:03.1560415Z       "requiredStages": [
2026-07-26T22:33:03.1560506Z         "doc",
2026-07-26T22:33:03.1560587Z         "impl",
2026-07-26T22:33:03.1560669Z         "unit"
2026-07-26T22:33:03.1560749Z       ],
2026-07-26T22:33:03.1560840Z       "stages": {
2026-07-26T22:33:03.1560946Z         "doc": {
2026-07-26T22:33:03.1561045Z           "complete": true,
2026-07-26T22:33:03.1561140Z           "evidence": [
2026-07-26T22:33:03.1561217Z             {
2026-07-26T22:33:03.1561369Z               "path": "docs/adr/0039-peer-route-resolution-truth.md",
2026-07-26T22:33:03.1561453Z               "line": 46
2026-07-26T22:33:03.1561539Z             }
2026-07-26T22:33:03.1561620Z           ]
2026-07-26T22:33:03.1561700Z         },
2026-07-26T22:33:03.1561780Z         "impl": {
2026-07-26T22:33:03.1561866Z           "complete": true,
2026-07-26T22:33:03.1561958Z           "evidence": [
2026-07-26T22:33:03.1562048Z             {
2026-07-26T22:33:03.1562171Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.1562268Z               "line": 1092
2026-07-26T22:33:03.1562358Z             },
2026-07-26T22:33:03.1562442Z             {
2026-07-26T22:33:03.1562563Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1562648Z               "line": 936
2026-07-26T22:33:03.1562739Z             },
2026-07-26T22:33:03.1562815Z             {
2026-07-26T22:33:03.1562944Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-07-26T22:33:03.1563025Z               "line": 54
2026-07-26T22:33:03.1563116Z             },
2026-07-26T22:33:03.1563193Z             {
2026-07-26T22:33:03.1563311Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-07-26T22:33:03.1563397Z               "line": 118
2026-07-26T22:33:03.1563494Z             },
2026-07-26T22:33:03.1563570Z             {
2026-07-26T22:33:03.1563688Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-07-26T22:33:03.1563784Z               "line": 141
2026-07-26T22:33:03.1563875Z             },
2026-07-26T22:33:03.1563959Z             {
2026-07-26T22:33:03.1564173Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.1564258Z               "line": 75
2026-07-26T22:33:03.1564342Z             }
2026-07-26T22:33:03.1564423Z           ]
2026-07-26T22:33:03.1564510Z         },
2026-07-26T22:33:03.1564591Z         "int": {
2026-07-26T22:33:03.1564685Z           "complete": true,
2026-07-26T22:33:03.1564777Z           "evidence": [
2026-07-26T22:33:03.1564858Z             {
2026-07-26T22:33:03.1564990Z               "path": "crates/spt-daemon/tests/mesh_recovery.rs",
2026-07-26T22:33:03.1565082Z               "line": 285
2026-07-26T22:33:03.1565163Z             }
2026-07-26T22:33:03.1565249Z           ]
2026-07-26T22:33:03.1565329Z         },
2026-07-26T22:33:03.1565416Z         "unit": {
2026-07-26T22:33:03.1565511Z           "complete": true,
2026-07-26T22:33:03.1565606Z           "evidence": [
2026-07-26T22:33:03.1565779Z             {
2026-07-26T22:33:03.1565897Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.1565997Z               "line": 1975
2026-07-26T22:33:03.1566079Z             },
2026-07-26T22:33:03.1566159Z             {
2026-07-26T22:33:03.1566283Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.1566361Z               "line": 1180
2026-07-26T22:33:03.1566442Z             },
2026-07-26T22:33:03.1566521Z             {
2026-07-26T22:33:03.1566641Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-07-26T22:33:03.1566723Z               "line": 260
2026-07-26T22:33:03.1566803Z             },
2026-07-26T22:33:03.1566878Z             {
2026-07-26T22:33:03.1566993Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-07-26T22:33:03.1567074Z               "line": 311
2026-07-26T22:33:03.1567151Z             },
2026-07-26T22:33:03.1567231Z             {
2026-07-26T22:33:03.1567336Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.1567436Z               "line": 1109
2026-07-26T22:33:03.1567521Z             }
2026-07-26T22:33:03.1567607Z           ]
2026-07-26T22:33:03.1567699Z         }
2026-07-26T22:33:03.1567790Z       }
2026-07-26T22:33:03.1567874Z     },
2026-07-26T22:33:03.1567961Z     {
2026-07-26T22:33:03.1568051Z       "id": "REQ-PICKER-1",
2026-07-26T22:33:03.1571662Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-07-26T22:33:03.1571773Z       "requiredStages": [
2026-07-26T22:33:03.1571854Z         "impl",
2026-07-26T22:33:03.1571938Z         "unit"
2026-07-26T22:33:03.1572023Z       ],
2026-07-26T22:33:03.1572114Z       "stages": {
2026-07-26T22:33:03.1572204Z         "doc": {
2026-07-26T22:33:03.1572303Z           "complete": false,
2026-07-26T22:33:03.1572392Z           "evidence": []
2026-07-26T22:33:03.1572475Z         },
2026-07-26T22:33:03.1572570Z         "impl": {
2026-07-26T22:33:03.1572655Z           "complete": true,
2026-07-26T22:33:03.1572746Z           "evidence": [
2026-07-26T22:33:03.1572946Z             {
2026-07-26T22:33:03.1573065Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.1573161Z               "line": 467
2026-07-26T22:33:03.1573242Z             },
2026-07-26T22:33:03.1573332Z             {
2026-07-26T22:33:03.1573452Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1573547Z               "line": 648
2026-07-26T22:33:03.1573628Z             }
2026-07-26T22:33:03.1573714Z           ]
2026-07-26T22:33:03.1573795Z         },
2026-07-26T22:33:03.1573890Z         "int": {
2026-07-26T22:33:03.1573976Z           "complete": false,
2026-07-26T22:33:03.1574077Z           "evidence": []
2026-07-26T22:33:03.1574153Z         },
2026-07-26T22:33:03.1574243Z         "unit": {
2026-07-26T22:33:03.1574334Z           "complete": true,
2026-07-26T22:33:03.1574454Z           "evidence": [
2026-07-26T22:33:03.1574623Z             {
2026-07-26T22:33:03.1574747Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.1574836Z               "line": 771
2026-07-26T22:33:03.1574926Z             },
2026-07-26T22:33:03.1575003Z             {
2026-07-26T22:33:03.1575113Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.1575207Z               "line": 1584
2026-07-26T22:33:03.1575289Z             },
2026-07-26T22:33:03.1578649Z             {
2026-07-26T22:33:03.1578802Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1578903Z               "line": 2042
2026-07-26T22:33:03.1579054Z             },
2026-07-26T22:33:03.1579151Z             {
2026-07-26T22:33:03.1579270Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1579364Z               "line": 718
2026-07-26T22:33:03.1579446Z             }
2026-07-26T22:33:03.1579523Z           ]
2026-07-26T22:33:03.1579603Z         }
2026-07-26T22:33:03.1579688Z       }
2026-07-26T22:33:03.1579773Z     },
2026-07-26T22:33:03.1579850Z     {
2026-07-26T22:33:03.1579948Z       "id": "REQ-PICKER-2",
2026-07-26T22:33:03.1581936Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-07-26T22:33:03.1582028Z       "requiredStages": [
2026-07-26T22:33:03.1582104Z         "impl",
2026-07-26T22:33:03.1582183Z         "unit"
2026-07-26T22:33:03.1582265Z       ],
2026-07-26T22:33:03.1582357Z       "stages": {
2026-07-26T22:33:03.1582447Z         "doc": {
2026-07-26T22:33:03.1582546Z           "complete": false,
2026-07-26T22:33:03.1582631Z           "evidence": []
2026-07-26T22:33:03.1582750Z         },
2026-07-26T22:33:03.1582863Z         "impl": {
2026-07-26T22:33:03.1582967Z           "complete": true,
2026-07-26T22:33:03.1583058Z           "evidence": [
2026-07-26T22:33:03.1583144Z             {
2026-07-26T22:33:03.1583267Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.1583350Z               "line": 236
2026-07-26T22:33:03.1583435Z             }
2026-07-26T22:33:03.1583515Z           ]
2026-07-26T22:33:03.1583591Z         },
2026-07-26T22:33:03.1583679Z         "int": {
2026-07-26T22:33:03.1583769Z           "complete": false,
2026-07-26T22:33:03.1583854Z           "evidence": []
2026-07-26T22:33:03.1583936Z         },
2026-07-26T22:33:03.1584012Z         "unit": {
2026-07-26T22:33:03.1584107Z           "complete": true,
2026-07-26T22:33:03.1584202Z           "evidence": [
2026-07-26T22:33:03.1584284Z             {
2026-07-26T22:33:03.1584412Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.1584498Z               "line": 886
2026-07-26T22:33:03.1584722Z             }
2026-07-26T22:33:03.1584798Z           ]
2026-07-26T22:33:03.1584885Z         }
2026-07-26T22:33:03.1584967Z       }
2026-07-26T22:33:03.1585051Z     },
2026-07-26T22:33:03.1585131Z     {
2026-07-26T22:33:03.1585231Z       "id": "REQ-PICKER-3",
2026-07-26T22:33:03.1587670Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-07-26T22:33:03.1587895Z       "requiredStages": [
2026-07-26T22:33:03.1587989Z         "impl",
2026-07-26T22:33:03.1588074Z         "unit"
2026-07-26T22:33:03.1588160Z       ],
2026-07-26T22:33:03.1588243Z       "stages": {
2026-07-26T22:33:03.1588332Z         "doc": {
2026-07-26T22:33:03.1588432Z           "complete": false,
2026-07-26T22:33:03.1588519Z           "evidence": []
2026-07-26T22:33:03.1588595Z         },
2026-07-26T22:33:03.1588675Z         "impl": {
2026-07-26T22:33:03.1588772Z           "complete": true,
2026-07-26T22:33:03.1588857Z           "evidence": [
2026-07-26T22:33:03.1589033Z             {
2026-07-26T22:33:03.1589148Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1589248Z               "line": 159
2026-07-26T22:33:03.1589328Z             }
2026-07-26T22:33:03.1589406Z           ]
2026-07-26T22:33:03.1589487Z         },
2026-07-26T22:33:03.1589587Z         "int": {
2026-07-26T22:33:03.1589677Z           "complete": false,
2026-07-26T22:33:03.1589773Z           "evidence": []
2026-07-26T22:33:03.1589858Z         },
2026-07-26T22:33:03.1589939Z         "unit": {
2026-07-26T22:33:03.1590025Z           "complete": true,
2026-07-26T22:33:03.1590117Z           "evidence": [
2026-07-26T22:33:03.1590200Z             {
2026-07-26T22:33:03.1590319Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1590405Z               "line": 1000
2026-07-26T22:33:03.1590485Z             }
2026-07-26T22:33:03.1590565Z           ]
2026-07-26T22:33:03.1590645Z         }
2026-07-26T22:33:03.1590727Z       }
2026-07-26T22:33:03.1590805Z     },
2026-07-26T22:33:03.1590884Z     {
2026-07-26T22:33:03.1590985Z       "id": "REQ-PICKER-4",
2026-07-26T22:33:03.1592873Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-07-26T22:33:03.1592979Z       "requiredStages": [
2026-07-26T22:33:03.1593072Z         "impl",
2026-07-26T22:33:03.1593149Z         "unit"
2026-07-26T22:33:03.1593230Z       ],
2026-07-26T22:33:03.1593306Z       "stages": {
2026-07-26T22:33:03.1593389Z         "doc": {
2026-07-26T22:33:03.1593484Z           "complete": false,
2026-07-26T22:33:03.1593575Z           "evidence": []
2026-07-26T22:33:03.1593652Z         },
2026-07-26T22:33:03.1593732Z         "impl": {
2026-07-26T22:33:03.1593832Z           "complete": true,
2026-07-26T22:33:03.1594033Z           "evidence": [
2026-07-26T22:33:03.1594109Z             {
2026-07-26T22:33:03.1594234Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.1594310Z               "line": 554
2026-07-26T22:33:03.1594395Z             },
2026-07-26T22:33:03.1594471Z             {
2026-07-26T22:33:03.1594577Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1594662Z               "line": 140
2026-07-26T22:33:03.1594743Z             }
2026-07-26T22:33:03.1594825Z           ]
2026-07-26T22:33:03.1594906Z         },
2026-07-26T22:33:03.1594987Z         "int": {
2026-07-26T22:33:03.1595082Z           "complete": false,
2026-07-26T22:33:03.1595159Z           "evidence": []
2026-07-26T22:33:03.1595240Z         },
2026-07-26T22:33:03.1595320Z         "unit": {
2026-07-26T22:33:03.1595508Z           "complete": true,
2026-07-26T22:33:03.1595588Z           "evidence": [
2026-07-26T22:33:03.1595668Z             {
2026-07-26T22:33:03.1595777Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.1595872Z               "line": 1866
2026-07-26T22:33:03.1595952Z             },
2026-07-26T22:33:03.1596027Z             {
2026-07-26T22:33:03.1596142Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1596229Z               "line": 1407
2026-07-26T22:33:03.1596309Z             }
2026-07-26T22:33:03.1596389Z           ]
2026-07-26T22:33:03.1596472Z         }
2026-07-26T22:33:03.1596548Z       }
2026-07-26T22:33:03.1596619Z     },
2026-07-26T22:33:03.1596699Z     {
2026-07-26T22:33:03.1596791Z       "id": "REQ-PICKER-5",
2026-07-26T22:33:03.1599874Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-07-26T22:33:03.1599985Z       "requiredStages": [
2026-07-26T22:33:03.1600071Z         "impl",
2026-07-26T22:33:03.1600161Z         "unit"
2026-07-26T22:33:03.1600242Z       ],
2026-07-26T22:33:03.1600333Z       "stages": {
2026-07-26T22:33:03.1600413Z         "doc": {
2026-07-26T22:33:03.1600508Z           "complete": false,
2026-07-26T22:33:03.1600605Z           "evidence": []
2026-07-26T22:33:03.1600691Z         },
2026-07-26T22:33:03.1600780Z         "impl": {
2026-07-26T22:33:03.1600874Z           "complete": true,
2026-07-26T22:33:03.1600965Z           "evidence": [
2026-07-26T22:33:03.1601046Z             {
2026-07-26T22:33:03.1601159Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1601245Z               "line": 3627
2026-07-26T22:33:03.1601331Z             },
2026-07-26T22:33:03.1601412Z             {
2026-07-26T22:33:03.1601511Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1601597Z               "line": 3699
2026-07-26T22:33:03.1601688Z             }
2026-07-26T22:33:03.1601764Z           ]
2026-07-26T22:33:03.1601840Z         },
2026-07-26T22:33:03.1601918Z         "int": {
2026-07-26T22:33:03.1602017Z           "complete": false,
2026-07-26T22:33:03.1602112Z           "evidence": []
2026-07-26T22:33:03.1602184Z         },
2026-07-26T22:33:03.1602266Z         "unit": {
2026-07-26T22:33:03.1602450Z           "complete": true,
2026-07-26T22:33:03.1602537Z           "evidence": [
2026-07-26T22:33:03.1602627Z             {
2026-07-26T22:33:03.1602732Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1602828Z               "line": 14311
2026-07-26T22:33:03.1602905Z             },
2026-07-26T22:33:03.1602989Z             {
2026-07-26T22:33:03.1603089Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1603181Z               "line": 14565
2026-07-26T22:33:03.1603267Z             }
2026-07-26T22:33:03.1603347Z           ]
2026-07-26T22:33:03.1603429Z         }
2026-07-26T22:33:03.1603506Z       }
2026-07-26T22:33:03.1603591Z     },
2026-07-26T22:33:03.1603680Z     {
2026-07-26T22:33:03.1603795Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-07-26T22:33:03.1605161Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-07-26T22:33:03.1605365Z       "requiredStages": [],
2026-07-26T22:33:03.1605453Z       "stages": {
2026-07-26T22:33:03.1605532Z         "doc": {
2026-07-26T22:33:03.1605628Z           "complete": false,
2026-07-26T22:33:03.1605710Z           "evidence": []
2026-07-26T22:33:03.1605796Z         },
2026-07-26T22:33:03.1605885Z         "impl": {
2026-07-26T22:33:03.1605967Z           "complete": false,
2026-07-26T22:33:03.1606053Z           "evidence": []
2026-07-26T22:33:03.1606124Z         },
2026-07-26T22:33:03.1606219Z         "int": {
2026-07-26T22:33:03.1606313Z           "complete": false,
2026-07-26T22:33:03.1606404Z           "evidence": []
2026-07-26T22:33:03.1606484Z         },
2026-07-26T22:33:03.1606564Z         "unit": {
2026-07-26T22:33:03.1606664Z           "complete": false,
2026-07-26T22:33:03.1606760Z           "evidence": []
2026-07-26T22:33:03.1606836Z         }
2026-07-26T22:33:03.1606916Z       }
2026-07-26T22:33:03.1606993Z     },
2026-07-26T22:33:03.1607070Z     {
2026-07-26T22:33:03.1607179Z       "id": "REQ-PICKER-BACK-NAV",
2026-07-26T22:33:03.1609887Z       "title": "C-4 (REMOTE-TRUTH triage §C-4 #9): Backspace is a back() ALIAS across the picker — one keypress backs out one screen along the SAME reverse map Esc walks (model back(), complete for all screens incl. the C-3 ConfirmPurge), and from the kind layer it cancels the picker (Esc parity) — EXCEPT the two text-edit contexts, where Backspace stays CHAR-DELETE: CreateId entry (id_backspace) and the pick-list filter mode (filter_backspace). DELIBERATE: no empty-buffer fallthrough to back() in the text contexts — mixing delete and nav on one key invites miskeys mid-typing; Esc already backs out (the triage's optional extra, declined). Pure key routing in handle_key (picker/mod.rs) ahead of the per-screen arms; zero model change (the reverse map pre-existed). Red-first: Backspace on Confirm → PickExisting (pre-fix: dead key); on CreateId with a buffer → buffer shortens, screen unchanged; empty buffer → STILL no nav.",
2026-07-26T22:33:03.1609997Z       "requiredStages": [
2026-07-26T22:33:03.1610077Z         "impl",
2026-07-26T22:33:03.1610163Z         "unit"
2026-07-26T22:33:03.1610240Z       ],
2026-07-26T22:33:03.1610335Z       "stages": {
2026-07-26T22:33:03.1610415Z         "doc": {
2026-07-26T22:33:03.1610511Z           "complete": false,
2026-07-26T22:33:03.1610602Z           "evidence": []
2026-07-26T22:33:03.1610697Z         },
2026-07-26T22:33:03.1610787Z         "impl": {
2026-07-26T22:33:03.1610879Z           "complete": true,
2026-07-26T22:33:03.1610960Z           "evidence": [
2026-07-26T22:33:03.1611045Z             {
2026-07-26T22:33:03.1611160Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.1611237Z               "line": 229
2026-07-26T22:33:03.1611416Z             }
2026-07-26T22:33:03.1611497Z           ]
2026-07-26T22:33:03.1611578Z         },
2026-07-26T22:33:03.1611657Z         "int": {
2026-07-26T22:33:03.1611752Z           "complete": false,
2026-07-26T22:33:03.1611843Z           "evidence": []
2026-07-26T22:33:03.1611930Z         },
2026-07-26T22:33:03.1612023Z         "unit": {
2026-07-26T22:33:03.1612114Z           "complete": true,
2026-07-26T22:33:03.1612206Z           "evidence": [
2026-07-26T22:33:03.1612282Z             {
2026-07-26T22:33:03.1612458Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.1612549Z               "line": 676
2026-07-26T22:33:03.1612625Z             },
2026-07-26T22:33:03.1612700Z             {
2026-07-26T22:33:03.1612811Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.1612986Z               "line": 695
2026-07-26T22:33:03.1613073Z             }
2026-07-26T22:33:03.1613150Z           ]
2026-07-26T22:33:03.1613230Z         }
2026-07-26T22:33:03.1613306Z       }
2026-07-26T22:33:03.1613398Z     },
2026-07-26T22:33:03.1613479Z     {
2026-07-26T22:33:03.1613602Z       "id": "REQ-PICKER-CHANGE-ADAPTER-FLOW",
2026-07-26T22:33:03.1616078Z       "title": "B-2 (F029, operator; LARGEST item): `ConfirmOption::ChangeAdapter` wrongly routes into the CREATE flow (Screen::CreateAdapter → CreateId → CreateHome → START, reenter_create(true)) — it re-prompts id + home and then STARTS the endpoint. Required: prompt ONLY the harness-adapter pick, apply the change to the perch record (update info.json.adapter via the existing write seam; an `<adapter>:<profile>` pick stamps the full option, composing with A-4), then RETURN to the endpoint's Confirm menu — NO id prompt, NO home prompt, NO start. FIX: a return-to-Confirm mode on the adapter-pick screen (flag or dedicated Screen::ChangeAdapterPick) skipping CreateId/CreateHome + the launch outcome. Unit the flow-state transitions + the record write. Shared-seam: touches picker flow state — run the full picker cluster. See triage B-2.",
2026-07-26T22:33:03.1616183Z       "requiredStages": [
2026-07-26T22:33:03.1616265Z         "impl",
2026-07-26T22:33:03.1616351Z         "unit"
2026-07-26T22:33:03.1616426Z       ],
2026-07-26T22:33:03.1616507Z       "stages": {
2026-07-26T22:33:03.1616595Z         "doc": {
2026-07-26T22:33:03.1616694Z           "complete": false,
2026-07-26T22:33:03.1616783Z           "evidence": []
2026-07-26T22:33:03.1616863Z         },
2026-07-26T22:33:03.1616950Z         "impl": {
2026-07-26T22:33:03.1617048Z           "complete": true,
2026-07-26T22:33:03.1617124Z           "evidence": [
2026-07-26T22:33:03.1617209Z             {
2026-07-26T22:33:03.1617315Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.1617410Z               "line": 418
2026-07-26T22:33:03.1617495Z             },
2026-07-26T22:33:03.1617592Z             {
2026-07-26T22:33:03.1617711Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1617810Z               "line": 1597
2026-07-26T22:33:03.1617897Z             },
2026-07-26T22:33:03.1617973Z             {
2026-07-26T22:33:03.1618091Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1618183Z               "line": 1615
2026-07-26T22:33:03.1618260Z             },
2026-07-26T22:33:03.1618340Z             {
2026-07-26T22:33:03.1618454Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1618541Z               "line": 1625
2026-07-26T22:33:03.1618621Z             }
2026-07-26T22:33:03.1618707Z           ]
2026-07-26T22:33:03.1618788Z         },
2026-07-26T22:33:03.1618866Z         "int": {
2026-07-26T22:33:03.1619031Z           "complete": false,
2026-07-26T22:33:03.1619127Z           "evidence": []
2026-07-26T22:33:03.1619205Z         },
2026-07-26T22:33:03.1619293Z         "unit": {
2026-07-26T22:33:03.1619379Z           "complete": true,
2026-07-26T22:33:03.1619466Z           "evidence": [
2026-07-26T22:33:03.1619543Z             {
2026-07-26T22:33:03.1619660Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1619841Z               "line": 1866
2026-07-26T22:33:03.1619923Z             },
2026-07-26T22:33:03.1619998Z             {
2026-07-26T22:33:03.1620117Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1620223Z               "line": 983
2026-07-26T22:33:03.1620322Z             }
2026-07-26T22:33:03.1620413Z           ]
2026-07-26T22:33:03.1620481Z         }
2026-07-26T22:33:03.1620571Z       }
2026-07-26T22:33:03.1620651Z     },
2026-07-26T22:33:03.1620738Z     {
2026-07-26T22:33:03.1620847Z       "id": "REQ-PICKER-CHOOSE-DEDUP-ALL",
2026-07-26T22:33:03.1622245Z       "title": "A4 (F028, operator #5): choose-project duplicate rows. model.rs:314-337 build_project_choices dedups the `Here: <run_cwd>` row only against the HEAD ref's dir (line 324) — an OLDER history ref with the SAME dir still renders, giving `Here: C:\\...\\projects` + `projects` as two rows for one project (operator screenshot). FIX: dedupe `Here` against ALL history dirs, and skip rest-rows whose dir == run_cwd when Here is present. Extend the model.rs:1847 choose-project test. See triage A4.",
2026-07-26T22:33:03.1622461Z       "requiredStages": [
2026-07-26T22:33:03.1622541Z         "impl",
2026-07-26T22:33:03.1622626Z         "unit"
2026-07-26T22:33:03.1622704Z       ],
2026-07-26T22:33:03.1622785Z       "stages": {
2026-07-26T22:33:03.1622875Z         "doc": {
2026-07-26T22:33:03.1622970Z           "complete": false,
2026-07-26T22:33:03.1623052Z           "evidence": []
2026-07-26T22:33:03.1623132Z         },
2026-07-26T22:33:03.1623213Z         "impl": {
2026-07-26T22:33:03.1623299Z           "complete": true,
2026-07-26T22:33:03.1623386Z           "evidence": [
2026-07-26T22:33:03.1623461Z             {
2026-07-26T22:33:03.1623585Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1623672Z               "line": 360
2026-07-26T22:33:03.1623767Z             }
2026-07-26T22:33:03.1623880Z           ]
2026-07-26T22:33:03.1624044Z         },
2026-07-26T22:33:03.1624177Z         "int": {
2026-07-26T22:33:03.1624273Z           "complete": false,
2026-07-26T22:33:03.1624359Z           "evidence": []
2026-07-26T22:33:03.1624443Z         },
2026-07-26T22:33:03.1624524Z         "unit": {
2026-07-26T22:33:03.1624621Z           "complete": true,
2026-07-26T22:33:03.1624707Z           "evidence": [
2026-07-26T22:33:03.1624781Z             {
2026-07-26T22:33:03.1624939Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1625056Z               "line": 2508
2026-07-26T22:33:03.1625150Z             }
2026-07-26T22:33:03.1625232Z           ]
2026-07-26T22:33:03.1625304Z         }
2026-07-26T22:33:03.1625381Z       }
2026-07-26T22:33:03.1625470Z     },
2026-07-26T22:33:03.1625551Z     {
2026-07-26T22:33:03.1625675Z       "id": "REQ-PICKER-CONTROL-LINE-STATUS-GATE",
2026-07-26T22:33:03.1627048Z       "title": "A2 (F028, operator #2): the picker confirm-panel 'controlled locally' line renders for OFFLINE endpoints. view.rs:425-436 builds control_line from ep.controlled with NO status gate; an offline endpoint with a stale controlled stamp shows 'controlled locally' (operator screenshot: hall-a offline + controlled locally). RENDER HALF (this REQ): control_line MUST be empty when status != Online. The upstream STICKY-stamp half (stamp survives client SIGKILL >=5min) is B3/REQ-PRESENCE-CONTROL-REAP-ON-EXIT. FIX: gate the render. See triage A2(a).",
2026-07-26T22:33:03.1627155Z       "requiredStages": [
2026-07-26T22:33:03.1627236Z         "impl",
2026-07-26T22:33:03.1627315Z         "unit"
2026-07-26T22:33:03.1627396Z       ],
2026-07-26T22:33:03.1627486Z       "stages": {
2026-07-26T22:33:03.1627563Z         "doc": {
2026-07-26T22:33:03.1627660Z           "complete": false,
2026-07-26T22:33:03.1627750Z           "evidence": []
2026-07-26T22:33:03.1627842Z         },
2026-07-26T22:33:03.1627933Z         "impl": {
2026-07-26T22:33:03.1628032Z           "complete": true,
2026-07-26T22:33:03.1628123Z           "evidence": [
2026-07-26T22:33:03.1628285Z             {
2026-07-26T22:33:03.1628399Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1628491Z               "line": 557
2026-07-26T22:33:03.1628571Z             }
2026-07-26T22:33:03.1628656Z           ]
2026-07-26T22:33:03.1628738Z         },
2026-07-26T22:33:03.1628834Z         "int": {
2026-07-26T22:33:03.1628929Z           "complete": false,
2026-07-26T22:33:03.1629096Z           "evidence": []
2026-07-26T22:33:03.1629177Z         },
2026-07-26T22:33:03.1629262Z         "unit": {
2026-07-26T22:33:03.1629357Z           "complete": true,
2026-07-26T22:33:03.1629445Z           "evidence": [
2026-07-26T22:33:03.1629524Z             {
2026-07-26T22:33:03.1629634Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1629721Z               "line": 810
2026-07-26T22:33:03.1629793Z             }
2026-07-26T22:33:03.1629978Z           ]
2026-07-26T22:33:03.1630050Z         }
2026-07-26T22:33:03.1630126Z       }
2026-07-26T22:33:03.1630215Z     },
2026-07-26T22:33:03.1630305Z     {
2026-07-26T22:33:03.1630420Z       "id": "REQ-PICKER-CONTROLLED-LOCAL",
2026-07-26T22:33:03.1632877Z       "title": "#3 local half: a LOCALLY-controlled endpoint renders CONTROLLED in its own node's picker. display_status() (crates/spt/src/picker/model.rs:415) derives Controlled ONLY from driven_by.is_some(), but driven_by is REMOTE-only by design (KH 7.15) — a locally-controlled endpoint has driven_by=None + controlled=true, and local_rows (data.rs:220) never threads controlled into EndpointRow, so a locally-RC'd endpoint shows plain ONLINE in its own picker (remote rows are fine — gossip stamps controller_node=self, REQ-GOSSIP-CONTROLLED-ANY; the asymmetry is the bug). Fix: EndpointRow gains controlled:bool (local: rec.controlled; remote: controller_node.is_some()); display_status -> Controlled when driven_by.is_some()||controlled; desc pane says 'controlled locally' when the driver is unnamed. See docs/NEXT-MILESTONE-PICKER-TRIAGE.md #3.",
2026-07-26T22:33:03.1632982Z       "requiredStages": [
2026-07-26T22:33:03.1633059Z         "impl",
2026-07-26T22:33:03.1633139Z         "unit"
2026-07-26T22:33:03.1633216Z       ],
2026-07-26T22:33:03.1633321Z       "stages": {
2026-07-26T22:33:03.1633426Z         "doc": {
2026-07-26T22:33:03.1633520Z           "complete": false,
2026-07-26T22:33:03.1633607Z           "evidence": []
2026-07-26T22:33:03.1633697Z         },
2026-07-26T22:33:03.1633783Z         "impl": {
2026-07-26T22:33:03.1633864Z           "complete": true,
2026-07-26T22:33:03.1633951Z           "evidence": [
2026-07-26T22:33:03.1634060Z             {
2026-07-26T22:33:03.1634169Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1634265Z               "line": 3537
2026-07-26T22:33:03.1634346Z             },
2026-07-26T22:33:03.1634422Z             {
2026-07-26T22:33:03.1634533Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1634627Z               "line": 288
2026-07-26T22:33:03.1634708Z             },
2026-07-26T22:33:03.1634804Z             {
2026-07-26T22:33:03.1634914Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1634999Z               "line": 617
2026-07-26T22:33:03.1635075Z             },
2026-07-26T22:33:03.1635162Z             {
2026-07-26T22:33:03.1635267Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1635360Z               "line": 675
2026-07-26T22:33:03.1635441Z             }
2026-07-26T22:33:03.1635532Z           ]
2026-07-26T22:33:03.1635607Z         },
2026-07-26T22:33:03.1635691Z         "int": {
2026-07-26T22:33:03.1635782Z           "complete": false,
2026-07-26T22:33:03.1635879Z           "evidence": []
2026-07-26T22:33:03.1635959Z         },
2026-07-26T22:33:03.1636054Z         "unit": {
2026-07-26T22:33:03.1636141Z           "complete": true,
2026-07-26T22:33:03.1636226Z           "evidence": [
2026-07-26T22:33:03.1636326Z             {
2026-07-26T22:33:03.1636455Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1636541Z               "line": 2015
2026-07-26T22:33:03.1636731Z             },
2026-07-26T22:33:03.1636818Z             {
2026-07-26T22:33:03.1636937Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1637027Z               "line": 754
2026-07-26T22:33:03.1637109Z             },
2026-07-26T22:33:03.1637194Z             {
2026-07-26T22:33:03.1637312Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1637405Z               "line": 771
2026-07-26T22:33:03.1637481Z             }
2026-07-26T22:33:03.1637579Z           ]
2026-07-26T22:33:03.1637661Z         }
2026-07-26T22:33:03.1637743Z       }
2026-07-26T22:33:03.1637824Z     },
2026-07-26T22:33:03.1637908Z     {
2026-07-26T22:33:03.1638027Z       "id": "REQ-PICKER-CURRENT-DIR-LABEL",
2026-07-26T22:33:03.1640437Z       "title": "A-2/A-3 (F029, operator, semantic pair): the Choose-project rows must self-identify the CURRENT DIR. build_project_choices (picker/model.rs:322-352). A-2: when the run cwd IS already a history dir the `Here:` row is (correctly) suppressed by the dedup (REQ-PICKER-CHOOSE-DEDUP-ALL), but the matching history row rendered bare `r.display` with no cwd affordance — mark it `<display> (CURRENT DIR)`. A-3: the not-in-history current-dir row changes from `Here: <run_cwd>` to `CURRENT DIR --> <project>`, deriving the display the SAME way the history refs do (folder tail; honest fallback to the raw path when underivable). `cwd` payload unchanged. Grep-tests rule: 3 `starts_with(\"Here: \")` asserts (model.rs) + a `Here: /here` render assert (view.rs) are behavior assertions on the OLD label. See triage A-2/A-3.",
2026-07-26T22:33:03.1640630Z       "requiredStages": [
2026-07-26T22:33:03.1640714Z         "impl",
2026-07-26T22:33:03.1640804Z         "unit"
2026-07-26T22:33:03.1640884Z       ],
2026-07-26T22:33:03.1640966Z       "stages": {
2026-07-26T22:33:03.1641057Z         "doc": {
2026-07-26T22:33:03.1641152Z           "complete": false,
2026-07-26T22:33:03.1641242Z           "evidence": []
2026-07-26T22:33:03.1641338Z         },
2026-07-26T22:33:03.1641414Z         "impl": {
2026-07-26T22:33:03.1641513Z           "complete": true,
2026-07-26T22:33:03.1641601Z           "evidence": [
2026-07-26T22:33:03.1641686Z             {
2026-07-26T22:33:03.1641800Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1641896Z               "line": 385
2026-07-26T22:33:03.1641982Z             },
2026-07-26T22:33:03.1642063Z             {
2026-07-26T22:33:03.1642177Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1642264Z               "line": 398
2026-07-26T22:33:03.1642339Z             }
2026-07-26T22:33:03.1642425Z           ]
2026-07-26T22:33:03.1642502Z         },
2026-07-26T22:33:03.1642588Z         "int": {
2026-07-26T22:33:03.1642677Z           "complete": false,
2026-07-26T22:33:03.1642759Z           "evidence": []
2026-07-26T22:33:03.1642850Z         },
2026-07-26T22:33:03.1642921Z         "unit": {
2026-07-26T22:33:03.1643016Z           "complete": true,
2026-07-26T22:33:03.1643110Z           "evidence": [
2026-07-26T22:33:03.1643216Z             {
2026-07-26T22:33:03.1643337Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1643417Z               "line": 2481
2026-07-26T22:33:03.1643528Z             }
2026-07-26T22:33:03.1643619Z           ]
2026-07-26T22:33:03.1643709Z         }
2026-07-26T22:33:03.1643781Z       }
2026-07-26T22:33:03.1643862Z     },
2026-07-26T22:33:03.1643943Z     {
2026-07-26T22:33:03.1644047Z       "id": "REQ-PICKER-FORK-LABEL-CWD",
2026-07-26T22:33:03.1645029Z       "title": "B-3 (F029, operator): the confirm-panel `Fork endpoint` option label is static and says nothing about WHERE the fork lands. A fork runs in the picker's launch cwd (run_cwd); the label must state that dir honestly: `Fork endpoint here --> <current dir>`. Anchor picker/view.rs confirm_option_label (was `fn(opt)->&'static str`). Make the label model-aware for the dir-relative options. See triage B-3.",
2026-07-26T22:33:03.1645135Z       "requiredStages": [
2026-07-26T22:33:03.1645321Z         "impl",
2026-07-26T22:33:03.1645398Z         "unit"
2026-07-26T22:33:03.1645474Z       ],
2026-07-26T22:33:03.1645559Z       "stages": {
2026-07-26T22:33:03.1645654Z         "doc": {
2026-07-26T22:33:03.1645742Z           "complete": false,
2026-07-26T22:33:03.1645836Z           "evidence": []
2026-07-26T22:33:03.1645920Z         },
2026-07-26T22:33:03.1646015Z         "impl": {
2026-07-26T22:33:03.1646111Z           "complete": true,
2026-07-26T22:33:03.1646204Z           "evidence": [
2026-07-26T22:33:03.1646285Z             {
2026-07-26T22:33:03.1646404Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1646486Z               "line": 482
2026-07-26T22:33:03.1646571Z             }
2026-07-26T22:33:03.1646648Z           ]
2026-07-26T22:33:03.1646729Z         },
2026-07-26T22:33:03.1646881Z         "int": {
2026-07-26T22:33:03.1646981Z           "complete": false,
2026-07-26T22:33:03.1647068Z           "evidence": []
2026-07-26T22:33:03.1647168Z         },
2026-07-26T22:33:03.1647257Z         "unit": {
2026-07-26T22:33:03.1647354Z           "complete": true,
2026-07-26T22:33:03.1647444Z           "evidence": [
2026-07-26T22:33:03.1647535Z             {
2026-07-26T22:33:03.1647635Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1647731Z               "line": 1030
2026-07-26T22:33:03.1647815Z             }
2026-07-26T22:33:03.1647906Z           ]
2026-07-26T22:33:03.1647979Z         }
2026-07-26T22:33:03.1648083Z       }
2026-07-26T22:33:03.1648164Z     },
2026-07-26T22:33:03.1648250Z     {
2026-07-26T22:33:03.1648346Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-07-26T22:33:03.1649543Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-07-26T22:33:03.1649654Z       "requiredStages": [
2026-07-26T22:33:03.1649749Z         "impl",
2026-07-26T22:33:03.1649824Z         "unit"
2026-07-26T22:33:03.1649906Z       ],
2026-07-26T22:33:03.1649996Z       "stages": {
2026-07-26T22:33:03.1650091Z         "doc": {
2026-07-26T22:33:03.1650172Z           "complete": false,
2026-07-26T22:33:03.1650265Z           "evidence": []
2026-07-26T22:33:03.1650344Z         },
2026-07-26T22:33:03.1650425Z         "impl": {
2026-07-26T22:33:03.1650527Z           "complete": true,
2026-07-26T22:33:03.1650612Z           "evidence": [
2026-07-26T22:33:03.1650707Z             {
2026-07-26T22:33:03.1650827Z               "path": "crates/spt-store/src/projderive.rs",
2026-07-26T22:33:03.1650923Z               "line": 104
2026-07-26T22:33:03.1651002Z             }
2026-07-26T22:33:03.1651122Z           ]
2026-07-26T22:33:03.1651209Z         },
2026-07-26T22:33:03.1651293Z         "int": {
2026-07-26T22:33:03.1651388Z           "complete": false,
2026-07-26T22:33:03.1651492Z           "evidence": []
2026-07-26T22:33:03.1651574Z         },
2026-07-26T22:33:03.1651655Z         "unit": {
2026-07-26T22:33:03.1651736Z           "complete": true,
2026-07-26T22:33:03.1651831Z           "evidence": [
2026-07-26T22:33:03.1651912Z             {
2026-07-26T22:33:03.1652036Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1652127Z               "line": 1341
2026-07-26T22:33:03.1652227Z             }
2026-07-26T22:33:03.1652303Z           ]
2026-07-26T22:33:03.1652389Z         }
2026-07-26T22:33:03.1652466Z       }
2026-07-26T22:33:03.1652542Z     },
2026-07-26T22:33:03.1652623Z     {
2026-07-26T22:33:03.1652752Z       "id": "REQ-PICKER-KEY-GATE-LAUNCH-CAPABLE",
2026-07-26T22:33:03.1654274Z       "title": "B-1 (F029, operator): the `h` (headless start) / `s` (shortcut) keybinds fire from broad picker contexts (mod.rs handle_confirm_key / ChooseProject / Resume) regardless of whether the highlighted row would LAUNCH the endpoint. Restrict both to launch-capable highlights: (a) `Start now` in the immediate-start case (should_offer_project_choice == false), (b) a Choose-project row, (c) a Resume-from-history row. The footer hint line must render `h`/`s` ONLY when actually live (hint truth = availability truth). FIX: gate the key handlers on (screen, highlighted-option), unit the gate as a pure matrix. See triage B-1.",
2026-07-26T22:33:03.1654484Z       "requiredStages": [
2026-07-26T22:33:03.1654579Z         "impl",
2026-07-26T22:33:03.1654665Z         "unit"
2026-07-26T22:33:03.1654746Z       ],
2026-07-26T22:33:03.1654827Z       "stages": {
2026-07-26T22:33:03.1654908Z         "doc": {
2026-07-26T22:33:03.1654999Z           "complete": false,
2026-07-26T22:33:03.1655099Z           "evidence": []
2026-07-26T22:33:03.1655175Z         },
2026-07-26T22:33:03.1655270Z         "impl": {
2026-07-26T22:33:03.1655456Z           "complete": true,
2026-07-26T22:33:03.1655547Z           "evidence": [
2026-07-26T22:33:03.1655629Z             {
2026-07-26T22:33:03.1655752Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1655833Z               "line": 1315
2026-07-26T22:33:03.1655919Z             },
2026-07-26T22:33:03.1655992Z             {
2026-07-26T22:33:03.1656114Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1656201Z               "line": 1493
2026-07-26T22:33:03.1656292Z             },
2026-07-26T22:33:03.1656373Z             {
2026-07-26T22:33:03.1656495Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1656585Z               "line": 1510
2026-07-26T22:33:03.1656662Z             }
2026-07-26T22:33:03.1656750Z           ]
2026-07-26T22:33:03.1656831Z         },
2026-07-26T22:33:03.1656917Z         "int": {
2026-07-26T22:33:03.1657013Z           "complete": false,
2026-07-26T22:33:03.1657108Z           "evidence": []
2026-07-26T22:33:03.1657203Z         },
2026-07-26T22:33:03.1657294Z         "unit": {
2026-07-26T22:33:03.1657390Z           "complete": true,
2026-07-26T22:33:03.1657493Z           "evidence": [
2026-07-26T22:33:03.1657581Z             {
2026-07-26T22:33:03.1657694Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1657789Z               "line": 1794
2026-07-26T22:33:03.1657866Z             },
2026-07-26T22:33:03.1657952Z             {
2026-07-26T22:33:03.1658062Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1658161Z               "line": 1002
2026-07-26T22:33:03.1658239Z             }
2026-07-26T22:33:03.1658324Z           ]
2026-07-26T22:33:03.1658400Z         }
2026-07-26T22:33:03.1658491Z       }
2026-07-26T22:33:03.1658572Z     },
2026-07-26T22:33:03.1658657Z     {
2026-07-26T22:33:03.1658762Z       "id": "REQ-PICKER-NODE-GROUPING",
2026-07-26T22:33:03.1660219Z       "title": "Bug #13: the endpoint run Subnet tab shows a machine once PER shared subnet (subnet_rows data.rs:253 iterates per-subnet, groups by subnet:node, no cross-subnet dedup). Fix: dedup by (node, endpoint_id) across the subnet loop, collect the set of shared subnet names per endpoint, emit one group per MACHINE (group = node_display) with its shared subnets listed beneath the machine name; reconcile per-endpoint status across subnets (most-alive). Couples REQ-ENDPOINT-LIST-PALETTE (both edit subnet_rows). See docs/NEXT-MILESTONE-BUG-TRIAGE.md #13.",
2026-07-26T22:33:03.1660332Z       "requiredStages": [
2026-07-26T22:33:03.1660413Z         "impl",
2026-07-26T22:33:03.1660505Z         "int"
2026-07-26T22:33:03.1660580Z       ],
2026-07-26T22:33:03.1660670Z       "stages": {
2026-07-26T22:33:03.1660752Z         "doc": {
2026-07-26T22:33:03.1660853Z           "complete": false,
2026-07-26T22:33:03.1660948Z           "evidence": []
2026-07-26T22:33:03.1661029Z         },
2026-07-26T22:33:03.1661120Z         "impl": {
2026-07-26T22:33:03.1661219Z           "complete": true,
2026-07-26T22:33:03.1661309Z           "evidence": [
2026-07-26T22:33:03.1661402Z             {
2026-07-26T22:33:03.1661520Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1661712Z               "line": 371
2026-07-26T22:33:03.1661788Z             },
2026-07-26T22:33:03.1661877Z             {
2026-07-26T22:33:03.1661986Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1662077Z               "line": 324
2026-07-26T22:33:03.1662154Z             }
2026-07-26T22:33:03.1662238Z           ]
2026-07-26T22:33:03.1662315Z         },
2026-07-26T22:33:03.1662416Z         "int": {
2026-07-26T22:33:03.1662511Z           "complete": true,
2026-07-26T22:33:03.1662605Z           "evidence": [
2026-07-26T22:33:03.1662687Z             {
2026-07-26T22:33:03.1662797Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1662877Z               "line": 933
2026-07-26T22:33:03.1662954Z             }
2026-07-26T22:33:03.1663036Z           ]
2026-07-26T22:33:03.1663230Z         },
2026-07-26T22:33:03.1663341Z         "unit": {
2026-07-26T22:33:03.1663449Z           "complete": false,
2026-07-26T22:33:03.1663550Z           "evidence": []
2026-07-26T22:33:03.1663637Z         }
2026-07-26T22:33:03.1663718Z       }
2026-07-26T22:33:03.1663812Z     },
2026-07-26T22:33:03.1663926Z     {
2026-07-26T22:33:03.1664038Z       "id": "REQ-PICKER-OFFLINE-NO-VIEW",
2026-07-26T22:33:03.1665030Z       "title": "A3 (F028, operator #3): 'View now (read-only)' is offered for OFFLINE endpoints. model.rs:1030 offline branch of confirm_options is vec![Start, View] — View is meaningless with no live PTY. FIX: offline set = [Start] (+ the existing Resume/ChangeAdapter/Instantiate/Fork/Shortcut tail). Update the view.rs options tests. See triage A3.",
2026-07-26T22:33:03.1665129Z       "requiredStages": [
2026-07-26T22:33:03.1665210Z         "impl",
2026-07-26T22:33:03.1665293Z         "unit"
2026-07-26T22:33:03.1665373Z       ],
2026-07-26T22:33:03.1665453Z       "stages": {
2026-07-26T22:33:03.1665550Z         "doc": {
2026-07-26T22:33:03.1665649Z           "complete": false,
2026-07-26T22:33:03.1665744Z           "evidence": []
2026-07-26T22:33:03.1665835Z         },
2026-07-26T22:33:03.1665922Z         "impl": {
2026-07-26T22:33:03.1666016Z           "complete": true,
2026-07-26T22:33:03.1666102Z           "evidence": [
2026-07-26T22:33:03.1666179Z             {
2026-07-26T22:33:03.1666303Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1666384Z               "line": 1266
2026-07-26T22:33:03.1666465Z             }
2026-07-26T22:33:03.1666542Z           ]
2026-07-26T22:33:03.1666627Z         },
2026-07-26T22:33:03.1666708Z         "int": {
2026-07-26T22:33:03.1666804Z           "complete": false,
2026-07-26T22:33:03.1666895Z           "evidence": []
2026-07-26T22:33:03.1666984Z         },
2026-07-26T22:33:03.1667064Z         "unit": {
2026-07-26T22:33:03.1667155Z           "complete": true,
2026-07-26T22:33:03.1667245Z           "evidence": [
2026-07-26T22:33:03.1667348Z             {
2026-07-26T22:33:03.1667453Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1667549Z               "line": 952
2026-07-26T22:33:03.1667639Z             }
2026-07-26T22:33:03.1667729Z           ]
2026-07-26T22:33:03.1667816Z         }
2026-07-26T22:33:03.1667902Z       }
2026-07-26T22:33:03.1667982Z     },
2026-07-26T22:33:03.1668067Z     {
2026-07-26T22:33:03.1668174Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-07-26T22:33:03.1669793Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-07-26T22:33:03.1669901Z       "requiredStages": [
2026-07-26T22:33:03.1669981Z         "impl",
2026-07-26T22:33:03.1670073Z         "unit"
2026-07-26T22:33:03.1670253Z       ],
2026-07-26T22:33:03.1670348Z       "stages": {
2026-07-26T22:33:03.1670426Z         "doc": {
2026-07-26T22:33:03.1670521Z           "complete": false,
2026-07-26T22:33:03.1670610Z           "evidence": []
2026-07-26T22:33:03.1670703Z         },
2026-07-26T22:33:03.1670779Z         "impl": {
2026-07-26T22:33:03.1670878Z           "complete": true,
2026-07-26T22:33:03.1670959Z           "evidence": [
2026-07-26T22:33:03.1671046Z             {
2026-07-26T22:33:03.1671164Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1671250Z               "line": 1271
2026-07-26T22:33:03.1671332Z             }
2026-07-26T22:33:03.1671422Z           ]
2026-07-26T22:33:03.1671503Z         },
2026-07-26T22:33:03.1671593Z         "int": {
2026-07-26T22:33:03.1675136Z           "complete": false,
2026-07-26T22:33:03.1675403Z           "evidence": []
2026-07-26T22:33:03.1675485Z         },
2026-07-26T22:33:03.1675576Z         "unit": {
2026-07-26T22:33:03.1675680Z           "complete": true,
2026-07-26T22:33:03.1675780Z           "evidence": [
2026-07-26T22:33:03.1675858Z             {
2026-07-26T22:33:03.1675990Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1676085Z               "line": 2322
2026-07-26T22:33:03.1676172Z             },
2026-07-26T22:33:03.1676248Z             {
2026-07-26T22:33:03.1676376Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1676473Z               "line": 2336
2026-07-26T22:33:03.1676553Z             }
2026-07-26T22:33:03.1676638Z           ]
2026-07-26T22:33:03.1676719Z         }
2026-07-26T22:33:03.1676812Z       }
2026-07-26T22:33:03.1676886Z     },
2026-07-26T22:33:03.1676968Z     {
2026-07-26T22:33:03.1677093Z       "id": "REQ-PICKER-PROJECT-DISPLAY-NAME",
2026-07-26T22:33:03.1679688Z       "title": "A1 (F028, operator #1/#4/#6-display): `github-com-*` 'ghost' project entries are NOT phantoms — project_id_for_dir (spt-store/src/project.rs:64) derives ids from the git remote slug BY DESIGN (REQ-STORE-1 cross-machine sync): `github.com/SaberMage/spt-core` -> `github-com-sabermage-spt-core`. The ref is truthful; the BUG is presentation — the raw slug renders as the DISPLAY NAME everywhere (confirm-panel history view.rs:415-419, choose-project labels model.rs:314-337, resume-row titles, endpoint-list project column via latest_project_ref data.rs:417), which no operator recognizes as 'spt-core'. FIX: keep the slug as the KEY, render a friendly display name — the repo tail (spt-core) reusing the disambiguate_project_ids (model.rs:346) suffix mechanism for collisions. One shared display-name seam across all four surfaces. See triage A1.",
2026-07-26T22:33:03.1679791Z       "requiredStages": [
2026-07-26T22:33:03.1679883Z         "impl",
2026-07-26T22:33:03.1679965Z         "unit"
2026-07-26T22:33:03.1680045Z       ],
2026-07-26T22:33:03.1680130Z       "stages": {
2026-07-26T22:33:03.1680210Z         "doc": {
2026-07-26T22:33:03.1680311Z           "complete": false,
2026-07-26T22:33:03.1680400Z           "evidence": []
2026-07-26T22:33:03.1680480Z         },
2026-07-26T22:33:03.1680575Z         "impl": {
2026-07-26T22:33:03.1680666Z           "complete": true,
2026-07-26T22:33:03.1680752Z           "evidence": [
2026-07-26T22:33:03.1680832Z             {
2026-07-26T22:33:03.1680957Z               "path": "crates/spt-store/src/project.rs",
2026-07-26T22:33:03.1681052Z               "line": 92
2026-07-26T22:33:03.1681133Z             },
2026-07-26T22:33:03.1681228Z             {
2026-07-26T22:33:03.1681343Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1681434Z               "line": 22
2026-07-26T22:33:03.1681514Z             },
2026-07-26T22:33:03.1681601Z             {
2026-07-26T22:33:03.1681701Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1681791Z               "line": 32
2026-07-26T22:33:03.1681868Z             },
2026-07-26T22:33:03.1681954Z             {
2026-07-26T22:33:03.1682063Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.1682250Z               "line": 68
2026-07-26T22:33:03.1682330Z             },
2026-07-26T22:33:03.1682407Z             {
2026-07-26T22:33:03.1682522Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1682617Z               "line": 281
2026-07-26T22:33:03.1682697Z             },
2026-07-26T22:33:03.1682778Z             {
2026-07-26T22:33:03.1682884Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1682978Z               "line": 416
2026-07-26T22:33:03.1683053Z             },
2026-07-26T22:33:03.1683134Z             {
2026-07-26T22:33:03.1683250Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1683335Z               "line": 846
2026-07-26T22:33:03.1683420Z             },
2026-07-26T22:33:03.1683498Z             {
2026-07-26T22:33:03.1683607Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1683793Z               "line": 534
2026-07-26T22:33:03.1683870Z             }
2026-07-26T22:33:03.1683970Z           ]
2026-07-26T22:33:03.1684050Z         },
2026-07-26T22:33:03.1684132Z         "int": {
2026-07-26T22:33:03.1684227Z           "complete": false,
2026-07-26T22:33:03.1684322Z           "evidence": []
2026-07-26T22:33:03.1684413Z         },
2026-07-26T22:33:03.1684504Z         "unit": {
2026-07-26T22:33:03.1684589Z           "complete": true,
2026-07-26T22:33:03.1684674Z           "evidence": [
2026-07-26T22:33:03.1684757Z             {
2026-07-26T22:33:03.1684885Z               "path": "crates/spt-store/src/project.rs",
2026-07-26T22:33:03.1684980Z               "line": 194
2026-07-26T22:33:03.1685061Z             },
2026-07-26T22:33:03.1685148Z             {
2026-07-26T22:33:03.1685270Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1685364Z               "line": 634
2026-07-26T22:33:03.1685446Z             },
2026-07-26T22:33:03.1685527Z             {
2026-07-26T22:33:03.1685630Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1685726Z               "line": 1359
2026-07-26T22:33:03.1685807Z             },
2026-07-26T22:33:03.1685883Z             {
2026-07-26T22:33:03.1685992Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1686093Z               "line": 1725
2026-07-26T22:33:03.1686179Z             },
2026-07-26T22:33:03.1686259Z             {
2026-07-26T22:33:03.1686365Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1686460Z               "line": 1741
2026-07-26T22:33:03.1686541Z             },
2026-07-26T22:33:03.1686626Z             {
2026-07-26T22:33:03.1686732Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1686813Z               "line": 958
2026-07-26T22:33:03.1686893Z             }
2026-07-26T22:33:03.1686974Z           ]
2026-07-26T22:33:03.1687057Z         }
2026-07-26T22:33:03.1687141Z       }
2026-07-26T22:33:03.1687222Z     },
2026-07-26T22:33:03.1687309Z     {
2026-07-26T22:33:03.1687433Z       "id": "REQ-PICKER-PROJECT-HISTORY-TRUTH",
2026-07-26T22:33:03.1690156Z       "title": "#1: picker project history is derived from sessions.log cwds (newest->oldest, deduped by project_id_for_dir) UNION context-store branches, EXCLUDING owlery-internal paths (any cwd under spt_home()/owlery) everywhere a project is displayed or inferred. Fixes three stacked defects (crates/spt/src/picker/data.rs): (1a) project_history_for (data.rs:372) reads ONLY context-store p-* branches, which are empty on this box -> history []; (1b) the fallback origin project (data.rs:207) is derived from info.json.cwd = latest-boot-cwd (rewritten every rebind), not origin; (1c) psyche-host sessions bind owlery-internal cwds that pollute history. Full DIRS stay available in the model (feature #5 needs them). PROJECT REPRESENTATION RULING (operator 2026-07-03): project IDs ONLY, EVERYWHERE incl local display; on ID collision disambiguate minimally via a PURE disambiguate_project_ids(entries)->display-names fn (append one-level-up parent folder and/or root drive letter, e.g. 'spt-core (projects)' vs 'spt-core (D:)'). See docs/NEXT-MILESTONE-PICKER-TRIAGE.md #1.",
2026-07-26T22:33:03.1690361Z       "requiredStages": [
2026-07-26T22:33:03.1690448Z         "impl",
2026-07-26T22:33:03.1690529Z         "unit"
2026-07-26T22:33:03.1690610Z       ],
2026-07-26T22:33:03.1690690Z       "stages": {
2026-07-26T22:33:03.1690775Z         "doc": {
2026-07-26T22:33:03.1690871Z           "complete": false,
2026-07-26T22:33:03.1690951Z           "evidence": []
2026-07-26T22:33:03.1691035Z         },
2026-07-26T22:33:03.1691111Z         "impl": {
2026-07-26T22:33:03.1691207Z           "complete": true,
2026-07-26T22:33:03.1691289Z           "evidence": [
2026-07-26T22:33:03.1691378Z             {
2026-07-26T22:33:03.1691488Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1691575Z               "line": 425
2026-07-26T22:33:03.1691755Z             }
2026-07-26T22:33:03.1691833Z           ]
2026-07-26T22:33:03.1691913Z         },
2026-07-26T22:33:03.1692003Z         "int": {
2026-07-26T22:33:03.1692099Z           "complete": false,
2026-07-26T22:33:03.1692180Z           "evidence": []
2026-07-26T22:33:03.1692261Z         },
2026-07-26T22:33:03.1692341Z         "unit": {
2026-07-26T22:33:03.1692442Z           "complete": true,
2026-07-26T22:33:03.1692537Z           "evidence": [
2026-07-26T22:33:03.1692618Z             {
2026-07-26T22:33:03.1692733Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1692819Z               "line": 1317
2026-07-26T22:33:03.1692900Z             }
2026-07-26T22:33:03.1692985Z           ]
2026-07-26T22:33:03.1693062Z         }
2026-07-26T22:33:03.1693144Z       }
2026-07-26T22:33:03.1693223Z     },
2026-07-26T22:33:03.1693305Z     {
2026-07-26T22:33:03.1693416Z       "id": "REQ-PICKER-PURGE-SHORTCUT",
2026-07-26T22:33:03.1697034Z       "title": "C-3 (REMOTE-TRUTH triage §C-3 #8): the pick-existing list gains an `x` purge shortcut — on an OFFLINE LOCAL highlight, `x` opens a small in-TUI confirm screen (Screen::ConfirmPurge, the B-2 ChangeAdapterPick shape) and Enter purges via the ONE existing purge core `cmd_endpoint_purge(id, yes=true, force=false)` — NEVER the core's stdin [y/N] (it fights the picker's raw mode; the confirm screen IS the confirm). The shortcut INHERITS both purge gates (offline-only + node-local, cli.rs cmd_endpoint_purge / CONTEXT:189): gated-off presses stay on the list and FLASH WHY (online → offline-only, remote → local-only). force=false is deliberate — the model gate is advisory; the core's own offline check is the authority, and a race to online between gate and purge must REFUSE, never stop-then-purge. After a successful purge the picker STAYS (inline outcome, like Shortcut/ChangeAdapter): the row leaves the in-memory list (remove_endpoint, cursor re-clamped) + flash PURGED:{id}. Hint truth (B-1/F029 discipline): the pick legend renders `x purge` ONLY when purge_key_live() — the same predicate the handler gates on. Red-first: purge outcome reachable ONLY from an offline LOCAL highlight (online/remote → no screen change + why-flash).",
2026-07-26T22:33:03.1697167Z       "requiredStages": [
2026-07-26T22:33:03.1697250Z         "impl",
2026-07-26T22:33:03.1697335Z         "unit"
2026-07-26T22:33:03.1697416Z       ],
2026-07-26T22:33:03.1697501Z       "stages": {
2026-07-26T22:33:03.1697583Z         "doc": {
2026-07-26T22:33:03.1697678Z           "complete": false,
2026-07-26T22:33:03.1697773Z           "evidence": []
2026-07-26T22:33:03.1697849Z         },
2026-07-26T22:33:03.1697941Z         "impl": {
2026-07-26T22:33:03.1698035Z           "complete": true,
2026-07-26T22:33:03.1698126Z           "evidence": [
2026-07-26T22:33:03.1698208Z             {
2026-07-26T22:33:03.1698326Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.1698412Z               "line": 169
2026-07-26T22:33:03.1698494Z             },
2026-07-26T22:33:03.1698571Z             {
2026-07-26T22:33:03.1698678Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.1698764Z               "line": 293
2026-07-26T22:33:03.1699024Z             },
2026-07-26T22:33:03.1699109Z             {
2026-07-26T22:33:03.1699225Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.1699306Z               "line": 337
2026-07-26T22:33:03.1699400Z             },
2026-07-26T22:33:03.1699482Z             {
2026-07-26T22:33:03.1699601Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1699681Z               "line": 820
2026-07-26T22:33:03.1699758Z             },
2026-07-26T22:33:03.1699835Z             {
2026-07-26T22:33:03.1699940Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1700020Z               "line": 1179
2026-07-26T22:33:03.1700102Z             },
2026-07-26T22:33:03.1700184Z             {
2026-07-26T22:33:03.1700302Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1700494Z               "line": 1187
2026-07-26T22:33:03.1700573Z             },
2026-07-26T22:33:03.1700654Z             {
2026-07-26T22:33:03.1700775Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1700860Z               "line": 1203
2026-07-26T22:33:03.1700940Z             },
2026-07-26T22:33:03.1701022Z             {
2026-07-26T22:33:03.1701138Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1701260Z               "line": 1212
2026-07-26T22:33:03.1701416Z             },
2026-07-26T22:33:03.1701534Z             {
2026-07-26T22:33:03.1701666Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1701753Z               "line": 359
2026-07-26T22:33:03.1701825Z             },
2026-07-26T22:33:03.1701905Z             {
2026-07-26T22:33:03.1702015Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1702106Z               "line": 382
2026-07-26T22:33:03.1702192Z             }
2026-07-26T22:33:03.1702287Z           ]
2026-07-26T22:33:03.1702373Z         },
2026-07-26T22:33:03.1702468Z         "int": {
2026-07-26T22:33:03.1702558Z           "complete": false,
2026-07-26T22:33:03.1702664Z           "evidence": []
2026-07-26T22:33:03.1702768Z         },
2026-07-26T22:33:03.1702873Z         "unit": {
2026-07-26T22:33:03.1702968Z           "complete": true,
2026-07-26T22:33:03.1703060Z           "evidence": [
2026-07-26T22:33:03.1703145Z             {
2026-07-26T22:33:03.1703264Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1703347Z               "line": 2753
2026-07-26T22:33:03.1703431Z             },
2026-07-26T22:33:03.1703512Z             {
2026-07-26T22:33:03.1703627Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1703709Z               "line": 2795
2026-07-26T22:33:03.1703788Z             },
2026-07-26T22:33:03.1703870Z             {
2026-07-26T22:33:03.1703981Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1704066Z               "line": 2811
2026-07-26T22:33:03.1704141Z             }
2026-07-26T22:33:03.1704221Z           ]
2026-07-26T22:33:03.1704303Z         }
2026-07-26T22:33:03.1704385Z       }
2026-07-26T22:33:03.1704460Z     },
2026-07-26T22:33:03.1704545Z     {
2026-07-26T22:33:03.1704661Z       "id": "REQ-PICKER-PURGE-STRUCTURED",
2026-07-26T22:33:03.1707756Z       "title": "RC-RENDER-TRUTH W3 (ADR-0043 decision 3, hertz stale-glyphs RCA leg 3 P0): core verbs invoked from inside an active TUI return STRUCTURED outcomes and write NOTHING to the terminal — the picker purge path calls a structured-outcome purge core (no stdout/stderr under the live alternate screen) and remains the sole renderer via model.flash (today cmd_endpoint_purge writes diagnostics/PURGED to stderr while ratatui owns the alt screen, mutating the physical screen behind the previous-Buffer diff baseline => later draws skip 'already blank' cells and stderr glyph fragments persist — the x-purge symptom). Baseline-desync regression REQUIRES a stateful/recording backend (pure TestBackend view snapshots cannot catch it). Gate: impl — structured purge outcome + silent-under-TUI routing; unit — purge core emits no terminal bytes in structured mode, picker converts outcomes to flash; int — recording backend: draw ConfirmPurge, inject an external display mutation, transition back => next frame reconstructs the COMPLETE target screen; doc — ADR-0043.",
2026-07-26T22:33:03.1707985Z       "requiredStages": [
2026-07-26T22:33:03.1708081Z         "doc",
2026-07-26T22:33:03.1708172Z         "impl",
2026-07-26T22:33:03.1708257Z         "unit",
2026-07-26T22:33:03.1708343Z         "int"
2026-07-26T22:33:03.1708429Z       ],
2026-07-26T22:33:03.1708501Z       "stages": {
2026-07-26T22:33:03.1708590Z         "doc": {
2026-07-26T22:33:03.1708681Z           "complete": true,
2026-07-26T22:33:03.1708769Z           "evidence": [
2026-07-26T22:33:03.1708849Z             {
2026-07-26T22:33:03.1709078Z               "path": "docs/adr/0043-terminal-render-lifecycle.md",
2026-07-26T22:33:03.1709267Z               "line": 57
2026-07-26T22:33:03.1709348Z             }
2026-07-26T22:33:03.1709429Z           ]
2026-07-26T22:33:03.1709528Z         },
2026-07-26T22:33:03.1709608Z         "impl": {
2026-07-26T22:33:03.1709703Z           "complete": true,
2026-07-26T22:33:03.1709780Z           "evidence": [
2026-07-26T22:33:03.1709871Z             {
2026-07-26T22:33:03.1709970Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1710056Z               "line": 13113
2026-07-26T22:33:03.1710137Z             },
2026-07-26T22:33:03.1710209Z             {
2026-07-26T22:33:03.1710323Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.1710400Z               "line": 170
2026-07-26T22:33:03.1710485Z             },
2026-07-26T22:33:03.1710566Z             {
2026-07-26T22:33:03.1710681Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.1710767Z               "line": 193
2026-07-26T22:33:03.1710848Z             }
2026-07-26T22:33:03.1710933Z           ]
2026-07-26T22:33:03.1711020Z         },
2026-07-26T22:33:03.1711101Z         "int": {
2026-07-26T22:33:03.1711196Z           "complete": true,
2026-07-26T22:33:03.1711286Z           "evidence": [
2026-07-26T22:33:03.1711373Z             {
2026-07-26T22:33:03.1711476Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.1711568Z               "line": 625
2026-07-26T22:33:03.1711650Z             }
2026-07-26T22:33:03.1711731Z           ]
2026-07-26T22:33:03.1711805Z         },
2026-07-26T22:33:03.1711895Z         "unit": {
2026-07-26T22:33:03.1711976Z           "complete": true,
2026-07-26T22:33:03.1712062Z           "evidence": [
2026-07-26T22:33:03.1712136Z             {
2026-07-26T22:33:03.1712250Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.1712342Z               "line": 593
2026-07-26T22:33:03.1712428Z             }
2026-07-26T22:33:03.1712513Z           ]
2026-07-26T22:33:03.1712594Z         }
2026-07-26T22:33:03.1712671Z       }
2026-07-26T22:33:03.1712757Z     },
2026-07-26T22:33:03.1712827Z     {
2026-07-26T22:33:03.1712923Z       "id": "REQ-PICKER-REMOTE-WAKE",
2026-07-26T22:33:03.1719362Z       "title": "C-2 (REMOTE-TRUTH triage §C-2 #4 + addendum @3442ce5): a REMOTE suspended picker row offers `Wake now` — waking the endpoint THROUGH its owning node's rest edge (the A-2 daemon resume leg) — instead of a bare `Start now` that silently cold-starts a COLLIDING LOCAL instance of a remote id (node-anchored identity violation, ADR-0003/0023). ROOT (certain): confirm_options collapsed Suspended into the offline action set = [Start,…]; on a REMOTE row `Start` bakes Outcome::Run with NO node → picker dispatch → cmd_endpoint_run creates a fresh LOCAL perch of the remote id (model.rs confirm_terminal / mod.rs dispatch). Remote rows are only Online/Suspended, so remote+offline == remote-suspended. FIX: confirm_options splits the offline arm on is_local — remote → vec![Wake] (a new ConfirmOption::Wake), local → vec![Start] UNCHANGED; confirm_terminal(Wake) → a new Outcome::Wake{id,node} carrying the RAW node hex; dispatch routes crate::cli::cmd_endpoint_wake_remote(id,node) → cmd_rest(id@node, RestEvent::Wake) = the EXISTING WAN rest arm (dispatch_wan_rest → wan_rest), and A-2's resume leg revives the session async (the full loop the operator wanted). `Instantiate locally` stays the separate deliberate-copy verb. ADDENDUM correction (a): EndpointRow.node is the LOSSY DISPLAY string (node_label_display = 'LABEL (prefix…)'), which node_qualifier_matches (full-hex-prefix|exact-label) CANNOT match — a dead Wake; so a NEW EndpointRow.node_key: String carries the raw ResourceRow.node hex (empty for local rows — Wake is remote-only) threaded through from_resource_row + the 4 literal ctors. CO-GATE (b, addendum): ChangeAdapter (was `offline`-gated) is gated `offline && is_local` — write_adapter_change → resolve_perch_path(Infer) → mutate_info rewrites a LOCAL perch record, so offering it on a remote suspended row is the SAME colliding-local-write-for-a-remote-id class (the Start twin); a remote node's adapter is not ours to rewrite from here. Red-first: a remote suspended row → confirm_options has Wake NOT Start NOT ChangeAdapter, and confirm_terminal(Wake) → Outcome::Wake{node==raw hex} (never a local Outcome::Run); a LOCAL offline row is UNCHANGED (Start + ChangeAdapter).",
2026-07-26T22:33:03.1719700Z       "requiredStages": [
2026-07-26T22:33:03.1719794Z         "impl",
2026-07-26T22:33:03.1719875Z         "unit",
2026-07-26T22:33:03.1719956Z         "int"
2026-07-26T22:33:03.1720041Z       ],
2026-07-26T22:33:03.1720130Z       "stages": {
2026-07-26T22:33:03.1720201Z         "doc": {
2026-07-26T22:33:03.1720302Z           "complete": false,
2026-07-26T22:33:03.1720388Z           "evidence": []
2026-07-26T22:33:03.1720469Z         },
2026-07-26T22:33:03.1720549Z         "impl": {
2026-07-26T22:33:03.1720646Z           "complete": true,
2026-07-26T22:33:03.1720736Z           "evidence": [
2026-07-26T22:33:03.1720816Z             {
2026-07-26T22:33:03.1720932Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1721031Z               "line": 3926
2026-07-26T22:33:03.1721122Z             },
2026-07-26T22:33:03.1721203Z             {
2026-07-26T22:33:03.1721323Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1721413Z               "line": 262
2026-07-26T22:33:03.1721498Z             },
2026-07-26T22:33:03.1721576Z             {
2026-07-26T22:33:03.1721703Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1721789Z               "line": 486
2026-07-26T22:33:03.1721871Z             },
2026-07-26T22:33:03.1721952Z             {
2026-07-26T22:33:03.1722070Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1722157Z               "line": 593
2026-07-26T22:33:03.1722234Z             },
2026-07-26T22:33:03.1722314Z             {
2026-07-26T22:33:03.1722422Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1722513Z               "line": 1261
2026-07-26T22:33:03.1722584Z             },
2026-07-26T22:33:03.1722664Z             {
2026-07-26T22:33:03.1722777Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1722863Z               "line": 1284
2026-07-26T22:33:03.1722955Z             },
2026-07-26T22:33:03.1723040Z             {
2026-07-26T22:33:03.1723149Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1723241Z               "line": 1389
2026-07-26T22:33:03.1723331Z             }
2026-07-26T22:33:03.1723416Z           ]
2026-07-26T22:33:03.1723488Z         },
2026-07-26T22:33:03.1723574Z         "int": {
2026-07-26T22:33:03.1723674Z           "complete": true,
2026-07-26T22:33:03.1723759Z           "evidence": [
2026-07-26T22:33:03.1723842Z             {
2026-07-26T22:33:03.1723960Z               "path": "crates/spt/tests/twohost_cli.rs",
2026-07-26T22:33:03.1724055Z               "line": 783
2026-07-26T22:33:03.1724132Z             }
2026-07-26T22:33:03.1724218Z           ]
2026-07-26T22:33:03.1724299Z         },
2026-07-26T22:33:03.1724394Z         "unit": {
2026-07-26T22:33:03.1724486Z           "complete": true,
2026-07-26T22:33:03.1724584Z           "evidence": [
2026-07-26T22:33:03.1724753Z             {
2026-07-26T22:33:03.1724871Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1724957Z               "line": 2351
2026-07-26T22:33:03.1725053Z             },
2026-07-26T22:33:03.1725149Z             {
2026-07-26T22:33:03.1725294Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1725438Z               "line": 2373
2026-07-26T22:33:03.1725561Z             },
2026-07-26T22:33:03.1725647Z             {
2026-07-26T22:33:03.1725767Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1725886Z               "line": 2393
2026-07-26T22:33:03.1725966Z             }
2026-07-26T22:33:03.1726053Z           ]
2026-07-26T22:33:03.1726120Z         }
2026-07-26T22:33:03.1726238Z       }
2026-07-26T22:33:03.1726344Z     },
2026-07-26T22:33:03.1726520Z     {
2026-07-26T22:33:03.1726643Z       "id": "REQ-PICKER-RESUME-CONTEXT-PANEL",
2026-07-26T22:33:03.1727809Z       "title": "#6: the 'Resume from history' view keeps the endpoint's 'Confirm selection' top panel and swaps ONLY the bottom panel to 'Resume from a prior session' — the user stays contextually informed about what they're picking (today the resume view replaces the whole screen). crates/spt/src/picker/view.rs (resume screen) + model screen state. See docs/NEXT-MILESTONE-PICKER-TRIAGE.md #6.",
2026-07-26T22:33:03.1727908Z       "requiredStages": [
2026-07-26T22:33:03.1728009Z         "impl",
2026-07-26T22:33:03.1728086Z         "unit"
2026-07-26T22:33:03.1728176Z       ],
2026-07-26T22:33:03.1728266Z       "stages": {
2026-07-26T22:33:03.1728353Z         "doc": {
2026-07-26T22:33:03.1728447Z           "complete": false,
2026-07-26T22:33:03.1728542Z           "evidence": []
2026-07-26T22:33:03.1728620Z         },
2026-07-26T22:33:03.1728710Z         "impl": {
2026-07-26T22:33:03.1728795Z           "complete": true,
2026-07-26T22:33:03.1728881Z           "evidence": [
2026-07-26T22:33:03.1729034Z             {
2026-07-26T22:33:03.1729158Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1729254Z               "line": 645
2026-07-26T22:33:03.1729349Z             }
2026-07-26T22:33:03.1729430Z           ]
2026-07-26T22:33:03.1729515Z         },
2026-07-26T22:33:03.1729602Z         "int": {
2026-07-26T22:33:03.1729702Z           "complete": false,
2026-07-26T22:33:03.1729778Z           "evidence": []
2026-07-26T22:33:03.1729864Z         },
2026-07-26T22:33:03.1729950Z         "unit": {
2026-07-26T22:33:03.1730045Z           "complete": true,
2026-07-26T22:33:03.1730126Z           "evidence": [
2026-07-26T22:33:03.1730198Z             {
2026-07-26T22:33:03.1730308Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1730387Z               "line": 1110
2026-07-26T22:33:03.1730473Z             }
2026-07-26T22:33:03.1730545Z           ]
2026-07-26T22:33:03.1730634Z         }
2026-07-26T22:33:03.1730709Z       }
2026-07-26T22:33:03.1730794Z     },
2026-07-26T22:33:03.1730871Z     {
2026-07-26T22:33:03.1730996Z       "id": "REQ-PICKER-SHORTCUT-LABEL-FILENAME",
2026-07-26T22:33:03.1732597Z       "title": "B-4 (F029, operator): the confirm-panel shortcut option label is a static `New/Update spt-<id> shortcut (s)` placeholder — it should name the REAL file it writes: `Set shortcut here --> <current dir>/<shortcut-name>` where <shortcut-name> is the EXACT on-disk filename (incl. extension). The name must be produced by the SAME function that names the file in shortcut creation (picker/shortcut.rs shortcut_filename over the manifest-resolved basename) so label and writer can NEVER drift. Anchor picker/view.rs confirm_option_label. See triage B-4.",
2026-07-26T22:33:03.1732697Z       "requiredStages": [
2026-07-26T22:33:03.1732784Z         "impl",
2026-07-26T22:33:03.1732875Z         "unit"
2026-07-26T22:33:03.1732954Z       ],
2026-07-26T22:33:03.1733039Z       "stages": {
2026-07-26T22:33:03.1733144Z         "doc": {
2026-07-26T22:33:03.1733238Z           "complete": false,
2026-07-26T22:33:03.1733318Z           "evidence": []
2026-07-26T22:33:03.1733515Z         },
2026-07-26T22:33:03.1733590Z         "impl": {
2026-07-26T22:33:03.1733676Z           "complete": true,
2026-07-26T22:33:03.1733758Z           "evidence": [
2026-07-26T22:33:03.1733843Z             {
2026-07-26T22:33:03.1733957Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1734049Z               "line": 482
2026-07-26T22:33:03.1734135Z             }
2026-07-26T22:33:03.1734211Z           ]
2026-07-26T22:33:03.1734300Z         },
2026-07-26T22:33:03.1734383Z         "int": {
2026-07-26T22:33:03.1734477Z           "complete": false,
2026-07-26T22:33:03.1734558Z           "evidence": []
2026-07-26T22:33:03.1734644Z         },
2026-07-26T22:33:03.1734726Z         "unit": {
2026-07-26T22:33:03.1734820Z           "complete": true,
2026-07-26T22:33:03.1734906Z           "evidence": [
2026-07-26T22:33:03.1735075Z             {
2026-07-26T22:33:03.1735188Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1735283Z               "line": 1030
2026-07-26T22:33:03.1735366Z             }
2026-07-26T22:33:03.1735450Z           ]
2026-07-26T22:33:03.1735526Z         }
2026-07-26T22:33:03.1735608Z       }
2026-07-26T22:33:03.1735690Z     },
2026-07-26T22:33:03.1735770Z     {
2026-07-26T22:33:03.1735888Z       "id": "REQ-PICKER-START-PROJECT-CHOICE",
2026-07-26T22:33:03.1737690Z       "title": "#5: after 'Start now' in the endpoint picker, swap the bottom Options panel to a 'Choose project' list: (1) the endpoint's most recent project dir, (2) 'Here: <dir>' — the spt endpoint run cwd (only if different), (3) all other project-history dirs newest->oldest. Fire the step ONLY when (A) the run cwd mismatches a singular history entry, or (B) history has >1 entry; otherwise start immediately (today's behavior). Depends on REQ-PICKER-PROJECT-HISTORY-TRUTH (needs full DIRS from sessions.log, owlery-internal exclusion applies). Start-now is local-only (no gossip). See docs/NEXT-MILESTONE-PICKER-TRIAGE.md #5.",
2026-07-26T22:33:03.1737795Z       "requiredStages": [
2026-07-26T22:33:03.1737891Z         "impl",
2026-07-26T22:33:03.1737972Z         "unit"
2026-07-26T22:33:03.1738066Z       ],
2026-07-26T22:33:03.1738151Z       "stages": {
2026-07-26T22:33:03.1738238Z         "doc": {
2026-07-26T22:33:03.1738331Z           "complete": false,
2026-07-26T22:33:03.1738421Z           "evidence": []
2026-07-26T22:33:03.1738512Z         },
2026-07-26T22:33:03.1738598Z         "impl": {
2026-07-26T22:33:03.1738683Z           "complete": true,
2026-07-26T22:33:03.1738759Z           "evidence": [
2026-07-26T22:33:03.1738845Z             {
2026-07-26T22:33:03.1739036Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1739121Z               "line": 1533
2026-07-26T22:33:03.1739204Z             },
2026-07-26T22:33:03.1739289Z             {
2026-07-26T22:33:03.1739403Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1739495Z               "line": 1556
2026-07-26T22:33:03.1739575Z             }
2026-07-26T22:33:03.1739665Z           ]
2026-07-26T22:33:03.1739741Z         },
2026-07-26T22:33:03.1739838Z         "int": {
2026-07-26T22:33:03.1739933Z           "complete": false,
2026-07-26T22:33:03.1740028Z           "evidence": []
2026-07-26T22:33:03.1740109Z         },
2026-07-26T22:33:03.1740200Z         "unit": {
2026-07-26T22:33:03.1740290Z           "complete": true,
2026-07-26T22:33:03.1740376Z           "evidence": [
2026-07-26T22:33:03.1740454Z             {
2026-07-26T22:33:03.1740571Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1740648Z               "line": 2456
2026-07-26T22:33:03.1740735Z             },
2026-07-26T22:33:03.1740811Z             {
2026-07-26T22:33:03.1740924Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1741009Z               "line": 2481
2026-07-26T22:33:03.1741095Z             },
2026-07-26T22:33:03.1741175Z             {
2026-07-26T22:33:03.1741298Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.1741480Z               "line": 2523
2026-07-26T22:33:03.1741560Z             },
2026-07-26T22:33:03.1741636Z             {
2026-07-26T22:33:03.1741756Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.1741837Z               "line": 1059
2026-07-26T22:33:03.1741927Z             }
2026-07-26T22:33:03.1742008Z           ]
2026-07-26T22:33:03.1742095Z         }
2026-07-26T22:33:03.1742175Z       }
2026-07-26T22:33:03.1742256Z     },
2026-07-26T22:33:03.1742337Z     {
2026-07-26T22:33:03.1742438Z       "id": "REQ-PICKER-UX-V013",
2026-07-26T22:33:03.1744022Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-07-26T22:33:03.1744222Z       "requiredStages": [],
2026-07-26T22:33:03.1744299Z       "stages": {
2026-07-26T22:33:03.1744385Z         "doc": {
2026-07-26T22:33:03.1744480Z           "complete": false,
2026-07-26T22:33:03.1744570Z           "evidence": []
2026-07-26T22:33:03.1744652Z         },
2026-07-26T22:33:03.1744732Z         "impl": {
2026-07-26T22:33:03.1744832Z           "complete": false,
2026-07-26T22:33:03.1744919Z           "evidence": []
2026-07-26T22:33:03.1745000Z         },
2026-07-26T22:33:03.1745080Z         "int": {
2026-07-26T22:33:03.1745175Z           "complete": false,
2026-07-26T22:33:03.1745267Z           "evidence": []
2026-07-26T22:33:03.1745357Z         },
2026-07-26T22:33:03.1745448Z         "unit": {
2026-07-26T22:33:03.1745548Z           "complete": false,
2026-07-26T22:33:03.1745639Z           "evidence": []
2026-07-26T22:33:03.1745723Z         }
2026-07-26T22:33:03.1745810Z       }
2026-07-26T22:33:03.1745888Z     },
2026-07-26T22:33:03.1745973Z     {
2026-07-26T22:33:03.1746087Z       "id": "REQ-PICKER-WINDOW-TITLE",
2026-07-26T22:33:03.1747522Z       "title": "B-5 (F029, operator): `spt endpoint run`'s interactive picker window/tab is untitled — hard to find among many terminals. Set the window/tab title to `SPT Endpoint Picker`. Anchor picker/mod.rs:88 setup_terminal (crossterm SetTitle in the execute! chain). Set-only is acceptable (crossterm can't cheaply read the prior title to restore). Applies ONLY to the interactive picker path — non-interactive/headless `endpoint run` (REQ-HOST-RUN-1) must NOT retitle the operator's terminal. See triage B-5.",
2026-07-26T22:33:03.1747625Z       "requiredStages": [
2026-07-26T22:33:03.1747706Z         "impl"
2026-07-26T22:33:03.1747783Z       ],
2026-07-26T22:33:03.1747884Z       "stages": {
2026-07-26T22:33:03.1747959Z         "doc": {
2026-07-26T22:33:03.1748064Z           "complete": false,
2026-07-26T22:33:03.1748161Z           "evidence": []
2026-07-26T22:33:03.1748245Z         },
2026-07-26T22:33:03.1748326Z         "impl": {
2026-07-26T22:33:03.1748427Z           "complete": true,
2026-07-26T22:33:03.1748518Z           "evidence": [
2026-07-26T22:33:03.1748607Z             {
2026-07-26T22:33:03.1748721Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.1748812Z               "line": 103
2026-07-26T22:33:03.1748896Z             }
2026-07-26T22:33:03.1749077Z           ]
2026-07-26T22:33:03.1749158Z         },
2026-07-26T22:33:03.1749248Z         "int": {
2026-07-26T22:33:03.1749334Z           "complete": false,
2026-07-26T22:33:03.1749415Z           "evidence": []
2026-07-26T22:33:03.1749492Z         },
2026-07-26T22:33:03.1749582Z         "unit": {
2026-07-26T22:33:03.1749667Z           "complete": false,
2026-07-26T22:33:03.1749764Z           "evidence": []
2026-07-26T22:33:03.1749849Z         }
2026-07-26T22:33:03.1749930Z       }
2026-07-26T22:33:03.1750011Z     },
2026-07-26T22:33:03.1750197Z     {
2026-07-26T22:33:03.1750292Z       "id": "REQ-PLATFORM-MUSL",
2026-07-26T22:33:03.1752683Z       "title": "MUSL-TIER W2 (register the musl platform, self-IDENTIFY): add x86_64-unknown-linux-musl to the W1 registry — a current_platform() cfg arm (target_arch=x86_64, target_os=linux, target_env=musl -> the musl triple, NO more 'unknown' fallback), asset name spt-x86_64-linux-musl, triple-map entry. PROVEN (doyle /diagnose 2026-07-08, backlog #14): the current tree builds+runs static musl with ZERO source changes (rustls not openssl; aws-lc-sys+bundled-sqlite clean under musl-gcc; openpty; DNS/HTTPS works statically) — so W2 is registry DATA + cfg + asset map, NO dependency changes. Gate: a musl-built spt self-reports x86_64-unknown-linux-musl (not 'unknown'); registry-membership unit (the cfg arm is cross-target, unit the registry not the arm); build the musl target in-gate (kitsubito toolchain) and assert current_platform.",
2026-07-26T22:33:03.1752883Z       "requiredStages": [
2026-07-26T22:33:03.1752979Z         "impl",
2026-07-26T22:33:03.1753064Z         "unit"
2026-07-26T22:33:03.1753150Z       ],
2026-07-26T22:33:03.1753241Z       "stages": {
2026-07-26T22:33:03.1753313Z         "doc": {
2026-07-26T22:33:03.1753412Z           "complete": false,
2026-07-26T22:33:03.1753503Z           "evidence": []
2026-07-26T22:33:03.1753590Z         },
2026-07-26T22:33:03.1753675Z         "impl": {
2026-07-26T22:33:03.1753770Z           "complete": true,
2026-07-26T22:33:03.1753861Z           "evidence": [
2026-07-26T22:33:03.1753933Z             {
2026-07-26T22:33:03.1754060Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.1754160Z               "line": 229
2026-07-26T22:33:03.1754241Z             },
2026-07-26T22:33:03.1754330Z             {
2026-07-26T22:33:03.1754438Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.1754539Z               "line": 274
2026-07-26T22:33:03.1754621Z             }
2026-07-26T22:33:03.1754701Z           ]
2026-07-26T22:33:03.1754791Z         },
2026-07-26T22:33:03.1754869Z         "int": {
2026-07-26T22:33:03.1754964Z           "complete": false,
2026-07-26T22:33:03.1755063Z           "evidence": []
2026-07-26T22:33:03.1755144Z         },
2026-07-26T22:33:03.1755226Z         "unit": {
2026-07-26T22:33:03.1755321Z           "complete": true,
2026-07-26T22:33:03.1755416Z           "evidence": [
2026-07-26T22:33:03.1755494Z             {
2026-07-26T22:33:03.1755607Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.1755698Z               "line": 765
2026-07-26T22:33:03.1755779Z             },
2026-07-26T22:33:03.1755866Z             {
2026-07-26T22:33:03.1755984Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.1756079Z               "line": 780
2026-07-26T22:33:03.1756161Z             }
2026-07-26T22:33:03.1756251Z           ]
2026-07-26T22:33:03.1756332Z         }
2026-07-26T22:33:03.1756418Z       }
2026-07-26T22:33:03.1756500Z     },
2026-07-26T22:33:03.1756589Z     {
2026-07-26T22:33:03.1756694Z       "id": "REQ-PLATFORM-REGISTRY",
2026-07-26T22:33:03.1759961Z       "title": "MUSL-TIER W1 (target-triple centralization, behaviour-NEUTRAL refactor): ONE authoritative platform registry from which current_platform(), KNOWN_TARGET_TRIPLES, the applyhost cross-platform 'other' logic, and the asset-name<->triple map all derive. ROOT: the target triple x86_64-unknown-linux-gnu + the implicit 'exactly 2 platforms' assumption are hardcoded across ~6 sites (release.rs current_platform cfg + KNOWN_TARGET_TRIPLES, applyhost.rs:740-743 win/linux binary if/else, xtask asset map, release.yml), so adding any platform (musl, future arm64) is a scattered edit. FIX: a data-driven registry (candidate: SUPPORTED_PLATFORMS const table of {triple, asset_name}) + generalize applyhost 'other' to 'every registered platform except current_platform()'. gnu+windows behaviour BYTE-IDENTICAL — the existing release/update/apply/propagate suites stay green (that is the gate). DESIGN FORK (doyle rules pre-dispatch): enum vs const-table; applyhost N-platform generalization; current_platform stays cfg->triple but output must be a registry member, loud 'unknown' fallback kept.",
2026-07-26T22:33:03.1760170Z       "requiredStages": [
2026-07-26T22:33:03.1760251Z         "impl",
2026-07-26T22:33:03.1760334Z         "unit"
2026-07-26T22:33:03.1760419Z       ],
2026-07-26T22:33:03.1760509Z       "stages": {
2026-07-26T22:33:03.1760586Z         "doc": {
2026-07-26T22:33:03.1760686Z           "complete": false,
2026-07-26T22:33:03.1760767Z           "evidence": []
2026-07-26T22:33:03.1760852Z         },
2026-07-26T22:33:03.1760934Z         "impl": {
2026-07-26T22:33:03.1761033Z           "complete": true,
2026-07-26T22:33:03.1761114Z           "evidence": [
2026-07-26T22:33:03.1761205Z             {
2026-07-26T22:33:03.1761325Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.1761511Z               "line": 210
2026-07-26T22:33:03.1761593Z             },
2026-07-26T22:33:03.1761696Z             {
2026-07-26T22:33:03.1761806Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.1761955Z               "line": 219
2026-07-26T22:33:03.1762044Z             },
2026-07-26T22:33:03.1762129Z             {
2026-07-26T22:33:03.1762239Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.1762333Z               "line": 241
2026-07-26T22:33:03.1762418Z             },
2026-07-26T22:33:03.1762504Z             {
2026-07-26T22:33:03.1762619Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.1762714Z               "line": 259
2026-07-26T22:33:03.1762804Z             },
2026-07-26T22:33:03.1762910Z             {
2026-07-26T22:33:03.1763009Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.1763085Z               "line": 777
2026-07-26T22:33:03.1763167Z             }
2026-07-26T22:33:03.1763257Z           ]
2026-07-26T22:33:03.1763338Z         },
2026-07-26T22:33:03.1763414Z         "int": {
2026-07-26T22:33:03.1763511Z           "complete": false,
2026-07-26T22:33:03.1763600Z           "evidence": []
2026-07-26T22:33:03.1763686Z         },
2026-07-26T22:33:03.1763762Z         "unit": {
2026-07-26T22:33:03.1763863Z           "complete": true,
2026-07-26T22:33:03.1763949Z           "evidence": [
2026-07-26T22:33:03.1764034Z             {
2026-07-26T22:33:03.1764150Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.1764235Z               "line": 750
2026-07-26T22:33:03.1764320Z             },
2026-07-26T22:33:03.1764397Z             {
2026-07-26T22:33:03.1764512Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.1764611Z               "line": 760
2026-07-26T22:33:03.1764686Z             },
2026-07-26T22:33:03.1764772Z             {
2026-07-26T22:33:03.1764890Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.1764975Z               "line": 765
2026-07-26T22:33:03.1765056Z             }
2026-07-26T22:33:03.1765142Z           ]
2026-07-26T22:33:03.1765224Z         }
2026-07-26T22:33:03.1765304Z       }
2026-07-26T22:33:03.1765385Z     },
2026-07-26T22:33:03.1765472Z     {
2026-07-26T22:33:03.1765558Z       "id": "REQ-PRES-1",
2026-07-26T22:33:03.1766868Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-07-26T22:33:03.1766964Z       "requiredStages": [
2026-07-26T22:33:03.1767060Z         "impl",
2026-07-26T22:33:03.1767140Z         "unit",
2026-07-26T22:33:03.1767221Z         "int"
2026-07-26T22:33:03.1767308Z       ],
2026-07-26T22:33:03.1767399Z       "stages": {
2026-07-26T22:33:03.1767483Z         "doc": {
2026-07-26T22:33:03.1767659Z           "complete": true,
2026-07-26T22:33:03.1767745Z           "evidence": [
2026-07-26T22:33:03.1767835Z             {
2026-07-26T22:33:03.1767930Z               "path": "docs/DEFERRED.md",
2026-07-26T22:33:03.1768027Z               "line": 11
2026-07-26T22:33:03.1768117Z             }
2026-07-26T22:33:03.1768197Z           ]
2026-07-26T22:33:03.1768279Z         },
2026-07-26T22:33:03.1768356Z         "impl": {
2026-07-26T22:33:03.1768456Z           "complete": true,
2026-07-26T22:33:03.1768535Z           "evidence": [
2026-07-26T22:33:03.1768618Z             {
2026-07-26T22:33:03.1768736Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.1768836Z               "line": 1302
2026-07-26T22:33:03.1768908Z             },
2026-07-26T22:33:03.1769060Z             {
2026-07-26T22:33:03.1769184Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.1769427Z               "line": 1354
2026-07-26T22:33:03.1769514Z             },
2026-07-26T22:33:03.1769615Z             {
2026-07-26T22:33:03.1769727Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1769818Z               "line": 223
2026-07-26T22:33:03.1769903Z             },
2026-07-26T22:33:03.1769984Z             {
2026-07-26T22:33:03.1770097Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1770182Z               "line": 249
2026-07-26T22:33:03.1770259Z             },
2026-07-26T22:33:03.1770350Z             {
2026-07-26T22:33:03.1770464Z               "path": "crates/spt-daemon/src/presence.rs",
2026-07-26T22:33:03.1770564Z               "line": 28
2026-07-26T22:33:03.1770640Z             },
2026-07-26T22:33:03.1770721Z             {
2026-07-26T22:33:03.1770836Z               "path": "crates/spt-daemon/src/presence.rs",
2026-07-26T22:33:03.1774237Z               "line": 105
2026-07-26T22:33:03.1774347Z             },
2026-07-26T22:33:03.1774438Z             {
2026-07-26T22:33:03.1774594Z               "path": "crates/spt-daemon/src/presence.rs",
2026-07-26T22:33:03.1774691Z               "line": 161
2026-07-26T22:33:03.1774776Z             },
2026-07-26T22:33:03.1774866Z             {
2026-07-26T22:33:03.1774996Z               "path": "crates/spt-daemon/src/presence.rs",
2026-07-26T22:33:03.1775086Z               "line": 203
2026-07-26T22:33:03.1775166Z             },
2026-07-26T22:33:03.1775256Z             {
2026-07-26T22:33:03.1775385Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.1775474Z               "line": 534
2026-07-26T22:33:03.1775554Z             },
2026-07-26T22:33:03.1775640Z             {
2026-07-26T22:33:03.1775760Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.1775883Z               "line": 289
2026-07-26T22:33:03.1775969Z             },
2026-07-26T22:33:03.1776051Z             {
2026-07-26T22:33:03.1776174Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.1776255Z               "line": 336
2026-07-26T22:33:03.1776337Z             },
2026-07-26T22:33:03.1776422Z             {
2026-07-26T22:33:03.1776545Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.1776628Z               "line": 362
2026-07-26T22:33:03.1776718Z             },
2026-07-26T22:33:03.1776794Z             {
2026-07-26T22:33:03.1776913Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.1776995Z               "line": 100
2026-07-26T22:33:03.1777076Z             }
2026-07-26T22:33:03.1777147Z           ]
2026-07-26T22:33:03.1777238Z         },
2026-07-26T22:33:03.1777319Z         "int": {
2026-07-26T22:33:03.1777414Z           "complete": true,
2026-07-26T22:33:03.1777504Z           "evidence": [
2026-07-26T22:33:03.1777592Z             {
2026-07-26T22:33:03.1777719Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-07-26T22:33:03.1777805Z               "line": 709
2026-07-26T22:33:03.1777887Z             },
2026-07-26T22:33:03.1777973Z             {
2026-07-26T22:33:03.1778090Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.1778315Z               "line": 804
2026-07-26T22:33:03.1778391Z             },
2026-07-26T22:33:03.1778476Z             {
2026-07-26T22:33:03.1778601Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.1778691Z               "line": 1320
2026-07-26T22:33:03.1778771Z             }
2026-07-26T22:33:03.1778859Z           ]
2026-07-26T22:33:03.1779030Z         },
2026-07-26T22:33:03.1779120Z         "unit": {
2026-07-26T22:33:03.1779206Z           "complete": true,
2026-07-26T22:33:03.1779310Z           "evidence": [
2026-07-26T22:33:03.1779382Z             {
2026-07-26T22:33:03.1779498Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.1779583Z               "line": 809
2026-07-26T22:33:03.1779659Z             },
2026-07-26T22:33:03.1779739Z             {
2026-07-26T22:33:03.1779959Z               "path": "crates/spt-daemon/src/presence.rs",
2026-07-26T22:33:03.1780040Z               "line": 267
2026-07-26T22:33:03.1780122Z             },
2026-07-26T22:33:03.1780208Z             {
2026-07-26T22:33:03.1780330Z               "path": "crates/spt-daemon/src/presence.rs",
2026-07-26T22:33:03.1780410Z               "line": 298
2026-07-26T22:33:03.1780492Z             },
2026-07-26T22:33:03.1780572Z             {
2026-07-26T22:33:03.1780690Z               "path": "crates/spt-daemon/src/presence.rs",
2026-07-26T22:33:03.1780776Z               "line": 334
2026-07-26T22:33:03.1780857Z             },
2026-07-26T22:33:03.1780938Z             {
2026-07-26T22:33:03.1781052Z               "path": "crates/spt-daemon/src/presence.rs",
2026-07-26T22:33:03.1781163Z               "line": 365
2026-07-26T22:33:03.1781253Z             },
2026-07-26T22:33:03.1781357Z             {
2026-07-26T22:33:03.1781478Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.1781568Z               "line": 1713
2026-07-26T22:33:03.1781648Z             },
2026-07-26T22:33:03.1781740Z             {
2026-07-26T22:33:03.1781868Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.1781958Z               "line": 1771
2026-07-26T22:33:03.1782035Z             }
2026-07-26T22:33:03.1782117Z           ]
2026-07-26T22:33:03.1782197Z         }
2026-07-26T22:33:03.1782278Z       }
2026-07-26T22:33:03.1782360Z     },
2026-07-26T22:33:03.1782446Z     {
2026-07-26T22:33:03.1782573Z       "id": "REQ-PRESENCE-CONTROL-REAP-ON-EXIT",
2026-07-26T22:33:03.1785336Z       "title": "B3 (F028, hall-b diagnosis + deferred #11 seed; BROADENED perri F-b CONFIRMED): dead-pid ONLINE decay window + sticky CONTROLLED stamp. Repro: /exit -> all endpoint processes dead -> `endpoint list` stays ■ ONLINE for a decay window before OFFLINE. Sticky CONTROLLED: perri confirmed controlled=true + attached_node SET while alive=false/OFFLINE, persisting >20min AND ACROSS A DAEMON RESTART (hall-b) — worse than the SIGKILL>=5min original (CAVEAT still: may reflect claude's --remote-control channel not the PTY attach — DISAMBIGUATE first). This is the deferred #11; RCA belongs to this wave. FIX: reap must clear presence AND control stamps promptly across FOUR paths — (i) clean exit, (ii) serve conn-drop, (iii) session-died-without-exit (crash/bounce), (iv) a BOOT-TIME sweep so a restarted daemon does NOT resurrect control stamps for endpoints it can see are dead. Int tests per edge. Closes A2(b). See triage B3 (broadened).",
2026-07-26T22:33:03.1785455Z       "requiredStages": [
2026-07-26T22:33:03.1785542Z         "impl",
2026-07-26T22:33:03.1785633Z         "unit",
2026-07-26T22:33:03.1785712Z         "int"
2026-07-26T22:33:03.1785797Z       ],
2026-07-26T22:33:03.1785878Z       "stages": {
2026-07-26T22:33:03.1785959Z         "doc": {
2026-07-26T22:33:03.1786052Z           "complete": false,
2026-07-26T22:33:03.1786152Z           "evidence": []
2026-07-26T22:33:03.1786234Z         },
2026-07-26T22:33:03.1786335Z         "impl": {
2026-07-26T22:33:03.1786419Z           "complete": true,
2026-07-26T22:33:03.1786510Z           "evidence": [
2026-07-26T22:33:03.1786710Z             {
2026-07-26T22:33:03.1786835Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.1786911Z               "line": 746
2026-07-26T22:33:03.1786987Z             }
2026-07-26T22:33:03.1787068Z           ]
2026-07-26T22:33:03.1787150Z         },
2026-07-26T22:33:03.1787231Z         "int": {
2026-07-26T22:33:03.1787321Z           "complete": true,
2026-07-26T22:33:03.1787407Z           "evidence": [
2026-07-26T22:33:03.1787493Z             {
2026-07-26T22:33:03.1787645Z               "path": "crates/spt-daemon/tests/control_stamp_lifetime.rs",
2026-07-26T22:33:03.1787740Z               "line": 324
2026-07-26T22:33:03.1787818Z             },
2026-07-26T22:33:03.1787903Z             {
2026-07-26T22:33:03.1788050Z               "path": "crates/spt-daemon/tests/control_stamp_lifetime.rs",
2026-07-26T22:33:03.1788204Z               "line": 416
2026-07-26T22:33:03.1788284Z             },
2026-07-26T22:33:03.1788365Z             {
2026-07-26T22:33:03.1788514Z               "path": "crates/spt-daemon/tests/control_stamp_lifetime.rs",
2026-07-26T22:33:03.1788593Z               "line": 433
2026-07-26T22:33:03.1788674Z             }
2026-07-26T22:33:03.1788750Z           ]
2026-07-26T22:33:03.1788837Z         },
2026-07-26T22:33:03.1788922Z         "unit": {
2026-07-26T22:33:03.1789108Z           "complete": true,
2026-07-26T22:33:03.1789190Z           "evidence": [
2026-07-26T22:33:03.1789279Z             {
2026-07-26T22:33:03.1789394Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.1789476Z               "line": 1473
2026-07-26T22:33:03.1789557Z             },
2026-07-26T22:33:03.1789641Z             {
2026-07-26T22:33:03.1789753Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.1789843Z               "line": 1596
2026-07-26T22:33:03.1789928Z             }
2026-07-26T22:33:03.1790019Z           ]
2026-07-26T22:33:03.1790096Z         }
2026-07-26T22:33:03.1790176Z       }
2026-07-26T22:33:03.1790252Z     },
2026-07-26T22:33:03.1790353Z     {
2026-07-26T22:33:03.1790468Z       "id": "REQ-PRESENCE-LIVENESS-TRUTH",
2026-07-26T22:33:03.1795304Z       "title": "A node's gossiped per-endpoint registry Status reflects real liveness, so a remote viewer never paints a DEAD endpoint as ONLINE. ROOT (confirmed + gated vs CONTEXT.md): registryhost.rs:397-405 advertises a NOT-alive perch as Status::Dormant (the `else` of is_perch_alive), re-stamped every gossip round (never ages to Offline). Design intent GATED vs resting.rs + CONTEXT.md: active/dormant is the MULTI-INSTANCE routing differentiator (active = the bare-id routing target; dormant = a WARM non-target sibling — 'driving ling@laptop makes ling@desktop dormant', resting.rs:97; transitions active→dormant on AttentionShift/Detach). suspended = COLD (session closed, resumable-on-wake) while its NODE is UP. offline = NODE DOWN — NEVER self-gossiped (RestState has no Offline; a live node only ever gossips active/dormant/suspended), remote-inferred via epoch-lease eviction. So labeling a NOT-running perch Dormant is the DEFECT (dormant requires warm/running). PRIMARY FIX (registryhost `else`, not-bound-alive): live-but-UNBOUND (has a live broker session; is_perch_alive is bound-gated) → Active/Dormant (still warm); else (cold, no live session, but its node is up because this very daemon is gossiping) → SUSPENDED — NOT Dormant, NOT Offline (the node is UP; Offline is never self-gossiped). This alone removes the false-ONLINE. dormant keeps gossiping (routing/MRA needs it) but RENDERS as its online flavor (no distinct glyph; the dormant→suspended auto-suspend timer disambiguates recency). The DISPLAY of these states (incl Suspended=gray-filled) is REQ-SUBNET-DISPLAY-PARITY. Design: docs/design/subnet-presence-display.md §A. (next milestone)",
2026-07-26T22:33:03.1795414Z       "requiredStages": [
2026-07-26T22:33:03.1795511Z         "impl",
2026-07-26T22:33:03.1795591Z         "unit",
2026-07-26T22:33:03.1795672Z         "int"
2026-07-26T22:33:03.1795758Z       ],
2026-07-26T22:33:03.1795952Z       "stages": {
2026-07-26T22:33:03.1796029Z         "doc": {
2026-07-26T22:33:03.1796121Z           "complete": false,
2026-07-26T22:33:03.1796221Z           "evidence": []
2026-07-26T22:33:03.1796296Z         },
2026-07-26T22:33:03.1796376Z         "impl": {
2026-07-26T22:33:03.1796457Z           "complete": true,
2026-07-26T22:33:03.1796543Z           "evidence": [
2026-07-26T22:33:03.1796622Z             {
2026-07-26T22:33:03.1796760Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.1796837Z               "line": 517
2026-07-26T22:33:03.1796923Z             },
2026-07-26T22:33:03.1797003Z             {
2026-07-26T22:33:03.1797124Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.1797209Z               "line": 945
2026-07-26T22:33:03.1797299Z             }
2026-07-26T22:33:03.1797467Z           ]
2026-07-26T22:33:03.1797557Z         },
2026-07-26T22:33:03.1797642Z         "int": {
2026-07-26T22:33:03.1797739Z           "complete": true,
2026-07-26T22:33:03.1797833Z           "evidence": [
2026-07-26T22:33:03.1797919Z             {
2026-07-26T22:33:03.1798034Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1798120Z               "line": 750
2026-07-26T22:33:03.1798196Z             }
2026-07-26T22:33:03.1798277Z           ]
2026-07-26T22:33:03.1798349Z         },
2026-07-26T22:33:03.1798439Z         "unit": {
2026-07-26T22:33:03.1798529Z           "complete": true,
2026-07-26T22:33:03.1798615Z           "evidence": [
2026-07-26T22:33:03.1798693Z             {
2026-07-26T22:33:03.1798820Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.1798901Z               "line": 2064
2026-07-26T22:33:03.1799060Z             }
2026-07-26T22:33:03.1799149Z           ]
2026-07-26T22:33:03.1799225Z         }
2026-07-26T22:33:03.1799315Z       }
2026-07-26T22:33:03.1799392Z     },
2026-07-26T22:33:03.1799473Z     {
2026-07-26T22:33:03.1799596Z       "id": "REQ-PROJECT-INDEX-INVALIDATION",
2026-07-26T22:33:03.1802364Z       "title": "PROJECT-INDEX W2 (ADR-0037): event-driven index invalidation, debounced + coalesced: new session/cwd -> refresh that endpoint + the shared cwd cache; context-store mutation -> ONE debounced global membership refresh keyed on BRANCH-TIP FINGERPRINTS (no authoritative context-commit path exists — a writer-maintained generation counter is REJECTED because nothing maintains it); bind/start, rename, fork, purge -> affected endpoint rows; low-frequency periodic reconcile as the backstop; cwd identity refresh ONLY on path/repo-identity/.git-config change (ordinary commits do NOT alter project identity); multiple invalidations coalesce into one refresh. Gate: impl — the event set + debounce/coalesce; unit — each event class maps to its refresh scope + coalescing proof + ordinary-commit no-op; int — session/context/rename/fork/purge invalidation against a live daemon; doc — rides the ADR + triage doc. Kin REQ-PROJECT-INDEX-WRITER.",
2026-07-26T22:33:03.1802463Z       "requiredStages": [
2026-07-26T22:33:03.1802560Z         "doc",
2026-07-26T22:33:03.1802640Z         "impl",
2026-07-26T22:33:03.1802726Z         "unit",
2026-07-26T22:33:03.1802807Z         "int"
2026-07-26T22:33:03.1802889Z       ],
2026-07-26T22:33:03.1802969Z       "stages": {
2026-07-26T22:33:03.1803050Z         "doc": {
2026-07-26T22:33:03.1803131Z           "complete": true,
2026-07-26T22:33:03.1803222Z           "evidence": [
2026-07-26T22:33:03.1803307Z             {
2026-07-26T22:33:03.1803402Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.1803480Z               "line": 604
2026-07-26T22:33:03.1803566Z             },
2026-07-26T22:33:03.1803646Z             {
2026-07-26T22:33:03.1803766Z               "path": "docs/PROJECT-INDEX-TRIAGE.md",
2026-07-26T22:33:03.1803852Z               "line": 46
2026-07-26T22:33:03.1803932Z             },
2026-07-26T22:33:03.1804014Z             {
2026-07-26T22:33:03.1804119Z               "path": "docs/STORAGE.md",
2026-07-26T22:33:03.1804201Z               "line": 192
2026-07-26T22:33:03.1804389Z             },
2026-07-26T22:33:03.1804470Z             {
2026-07-26T22:33:03.1804621Z               "path": "docs/adr/0037-materialized-project-index.md",
2026-07-26T22:33:03.1804701Z               "line": 37
2026-07-26T22:33:03.1804783Z             }
2026-07-26T22:33:03.1804869Z           ]
2026-07-26T22:33:03.1804949Z         },
2026-07-26T22:33:03.1805030Z         "impl": {
2026-07-26T22:33:03.1805160Z           "complete": true,
2026-07-26T22:33:03.1805301Z           "evidence": [
2026-07-26T22:33:03.1805451Z             {
2026-07-26T22:33:03.1805640Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1805732Z               "line": 281
2026-07-26T22:33:03.1805804Z             },
2026-07-26T22:33:03.1805879Z             {
2026-07-26T22:33:03.1805998Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1806198Z               "line": 408
2026-07-26T22:33:03.1806289Z             },
2026-07-26T22:33:03.1806376Z             {
2026-07-26T22:33:03.1806503Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1806585Z               "line": 621
2026-07-26T22:33:03.1806667Z             },
2026-07-26T22:33:03.1806753Z             {
2026-07-26T22:33:03.1806875Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1806955Z               "line": 668
2026-07-26T22:33:03.1807051Z             },
2026-07-26T22:33:03.1807131Z             {
2026-07-26T22:33:03.1807272Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:03.1807373Z               "line": 481
2026-07-26T22:33:03.1807469Z             },
2026-07-26T22:33:03.1807549Z             {
2026-07-26T22:33:03.1807664Z               "path": "crates/spt-msg/src/ready.rs",
2026-07-26T22:33:03.1807755Z               "line": 137
2026-07-26T22:33:03.1807849Z             },
2026-07-26T22:33:03.1807925Z             {
2026-07-26T22:33:03.1808046Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.1808136Z               "line": 153
2026-07-26T22:33:03.1808226Z             },
2026-07-26T22:33:03.1808304Z             {
2026-07-26T22:33:03.1808431Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.1808517Z               "line": 237
2026-07-26T22:33:03.1808604Z             },
2026-07-26T22:33:03.1808685Z             {
2026-07-26T22:33:03.1808817Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.1808909Z               "line": 381
2026-07-26T22:33:03.1809061Z             },
2026-07-26T22:33:03.1809142Z             {
2026-07-26T22:33:03.1809262Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.1809352Z               "line": 447
2026-07-26T22:33:03.1809428Z             },
2026-07-26T22:33:03.1809509Z             {
2026-07-26T22:33:03.1809630Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.1809718Z               "line": 507
2026-07-26T22:33:03.1809799Z             },
2026-07-26T22:33:03.1809894Z             {
2026-07-26T22:33:03.1810014Z               "path": "crates/spt-store/src/projinval.rs",
2026-07-26T22:33:03.1810099Z               "line": 19
2026-07-26T22:33:03.1810180Z             },
2026-07-26T22:33:03.1810262Z             {
2026-07-26T22:33:03.1810381Z               "path": "crates/spt-store/src/projinval.rs",
2026-07-26T22:33:03.1810475Z               "line": 85
2026-07-26T22:33:03.1810554Z             },
2026-07-26T22:33:03.1810643Z             {
2026-07-26T22:33:03.1810752Z               "path": "crates/spt-store/src/projinval.rs",
2026-07-26T22:33:03.1810839Z               "line": 103
2026-07-26T22:33:03.1810920Z             },
2026-07-26T22:33:03.1810996Z             {
2026-07-26T22:33:03.1811110Z               "path": "crates/spt-store/src/projinval.rs",
2026-07-26T22:33:03.1811202Z               "line": 143
2026-07-26T22:33:03.1811291Z             },
2026-07-26T22:33:03.1811372Z             {
2026-07-26T22:33:03.1811536Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.1811817Z               "line": 135
2026-07-26T22:33:03.1811907Z             },
2026-07-26T22:33:03.1811983Z             {
2026-07-26T22:33:03.1812091Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.1812206Z               "line": 550
2026-07-26T22:33:03.1812276Z             },
2026-07-26T22:33:03.1812361Z             {
2026-07-26T22:33:03.1812461Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1812548Z               "line": 13236
2026-07-26T22:33:03.1812623Z             }
2026-07-26T22:33:03.1812699Z           ]
2026-07-26T22:33:03.1812795Z         },
2026-07-26T22:33:03.1812891Z         "int": {
2026-07-26T22:33:03.1812976Z           "complete": true,
2026-07-26T22:33:03.1813071Z           "evidence": [
2026-07-26T22:33:03.1813148Z             {
2026-07-26T22:33:03.1813386Z               "path": "crates/spt/tests/projindex_writer_e2e.rs",
2026-07-26T22:33:03.1813477Z               "line": 19
2026-07-26T22:33:03.1813558Z             },
2026-07-26T22:33:03.1813634Z             {
2026-07-26T22:33:03.1813759Z               "path": "crates/spt/tests/projindex_writer_e2e.rs",
2026-07-26T22:33:03.1813844Z               "line": 278
2026-07-26T22:33:03.1813925Z             }
2026-07-26T22:33:03.1814011Z           ]
2026-07-26T22:33:03.1814088Z         },
2026-07-26T22:33:03.1814173Z         "unit": {
2026-07-26T22:33:03.1814254Z           "complete": true,
2026-07-26T22:33:03.1814345Z           "evidence": [
2026-07-26T22:33:03.1814431Z             {
2026-07-26T22:33:03.1814544Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1814626Z               "line": 898
2026-07-26T22:33:03.1814709Z             },
2026-07-26T22:33:03.1814784Z             {
2026-07-26T22:33:03.1814911Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1814992Z               "line": 971
2026-07-26T22:33:03.1815078Z             },
2026-07-26T22:33:03.1815162Z             {
2026-07-26T22:33:03.1815285Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1815362Z               "line": 1032
2026-07-26T22:33:03.1815453Z             },
2026-07-26T22:33:03.1815538Z             {
2026-07-26T22:33:03.1815653Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1815739Z               "line": 1053
2026-07-26T22:33:03.1815820Z             },
2026-07-26T22:33:03.1815895Z             {
2026-07-26T22:33:03.1816016Z               "path": "crates/spt-store/src/projinval.rs",
2026-07-26T22:33:03.1816091Z               "line": 165
2026-07-26T22:33:03.1816181Z             },
2026-07-26T22:33:03.1816267Z             {
2026-07-26T22:33:03.1816397Z               "path": "crates/spt-store/src/projinval.rs",
2026-07-26T22:33:03.1816473Z               "line": 189
2026-07-26T22:33:03.1816563Z             },
2026-07-26T22:33:03.1816650Z             {
2026-07-26T22:33:03.1816767Z               "path": "crates/spt-store/src/projinval.rs",
2026-07-26T22:33:03.1816849Z               "line": 213
2026-07-26T22:33:03.1816941Z             }
2026-07-26T22:33:03.1817022Z           ]
2026-07-26T22:33:03.1817111Z         }
2026-07-26T22:33:03.1817188Z       }
2026-07-26T22:33:03.1817270Z     },
2026-07-26T22:33:03.1817351Z     {
2026-07-26T22:33:03.1817478Z       "id": "REQ-PROJECT-INDEX-READER-CUTOVER",
2026-07-26T22:33:03.1820827Z       "title": "PROJECT-INDEX W3 (ADR-0037): endpoint list, the picker, and endpoint-info consume the materialized index — NO git work in any user-facing read path (the O(PxB+C) fanout at cli.rs ~2954 / picker/data.rs ~456-518 dies). BEHAVIORAL PARITY is binding: precedence session-cwd -> origin-cwd -> context-recency and rendered project IDs/display names unchanged (parity suite vs the old derivation on a fixture); bare/partial run shares the indexed projection; fully-qualified --adapter+--id direct run stays picker-free; the direct-run 25s broker-session gate stays separately tested/observable. Degradation legs (git unavailable, branch malformed/locked, cwd deleted) keep fast reads. Manual latency acceptance on the 13-perch/7-branch fixture (~30s -> sub-second) + hertz field-verify on HFENDULEAM — NOT a CI wall-clock gate. Gate: impl — reader cutover; unit — parity + degradation; int — list/picker against a daemon-maintained index incl. counters proving zero reader git spawns; doc — reference regen + CONTEXT avoid-list. Kin REQ-WHOAMI-IDENTITY-ONLY, REQ-PROJECT-INDEX-STORE/WRITER/INVALIDATION.",
2026-07-26T22:33:03.1821060Z       "requiredStages": [
2026-07-26T22:33:03.1821142Z         "doc",
2026-07-26T22:33:03.1821228Z         "impl",
2026-07-26T22:33:03.1821312Z         "unit",
2026-07-26T22:33:03.1821394Z         "int"
2026-07-26T22:33:03.1821475Z       ],
2026-07-26T22:33:03.1821561Z       "stages": {
2026-07-26T22:33:03.1821641Z         "doc": {
2026-07-26T22:33:03.1821738Z           "complete": true,
2026-07-26T22:33:03.1821909Z           "evidence": [
2026-07-26T22:33:03.1821994Z             {
2026-07-26T22:33:03.1822091Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.1822190Z               "line": 602
2026-07-26T22:33:03.1822276Z             },
2026-07-26T22:33:03.1822367Z             {
2026-07-26T22:33:03.1822453Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.1822547Z               "line": 605
2026-07-26T22:33:03.1822623Z             },
2026-07-26T22:33:03.1822704Z             {
2026-07-26T22:33:03.1822808Z               "path": "docs/STORAGE.md",
2026-07-26T22:33:03.1822897Z               "line": 165
2026-07-26T22:33:03.1822978Z             }
2026-07-26T22:33:03.1823050Z           ]
2026-07-26T22:33:03.1823132Z         },
2026-07-26T22:33:03.1823226Z         "impl": {
2026-07-26T22:33:03.1823317Z           "complete": true,
2026-07-26T22:33:03.1823408Z           "evidence": [
2026-07-26T22:33:03.1823479Z             {
2026-07-26T22:33:03.1823602Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1823694Z               "line": 439
2026-07-26T22:33:03.1823770Z             },
2026-07-26T22:33:03.1823851Z             {
2026-07-26T22:33:03.1823990Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1824075Z               "line": 471
2026-07-26T22:33:03.1824161Z             },
2026-07-26T22:33:03.1824242Z             {
2026-07-26T22:33:03.1824366Z               "path": "crates/spt-store/src/projindex.rs",
2026-07-26T22:33:03.1824461Z               "line": 63
2026-07-26T22:33:03.1824546Z             },
2026-07-26T22:33:03.1824625Z             {
2026-07-26T22:33:03.1824738Z               "path": "crates/spt-store/src/projindex.rs",
2026-07-26T22:33:03.1824819Z               "line": 109
2026-07-26T22:33:03.1824901Z             },
2026-07-26T22:33:03.1824982Z             {
2026-07-26T22:33:03.1825100Z               "path": "crates/spt-store/src/projindex.rs",
2026-07-26T22:33:03.1825186Z               "line": 118
2026-07-26T22:33:03.1825269Z             },
2026-07-26T22:33:03.1825353Z             {
2026-07-26T22:33:03.1825471Z               "path": "crates/spt-store/src/projindex.rs",
2026-07-26T22:33:03.1825571Z               "line": 148
2026-07-26T22:33:03.1825656Z             },
2026-07-26T22:33:03.1825741Z             {
2026-07-26T22:33:03.1825855Z               "path": "crates/spt-store/src/projindex.rs",
2026-07-26T22:33:03.1825946Z               "line": 157
2026-07-26T22:33:03.1826027Z             },
2026-07-26T22:33:03.1826107Z             {
2026-07-26T22:33:03.1826228Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.1826323Z               "line": 1000
2026-07-26T22:33:03.1826403Z             },
2026-07-26T22:33:03.1826489Z             {
2026-07-26T22:33:03.1826590Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1826690Z               "line": 3288
2026-07-26T22:33:03.1826765Z             },
2026-07-26T22:33:03.1826847Z             {
2026-07-26T22:33:03.1826947Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1827047Z               "line": 3391
2026-07-26T22:33:03.1827133Z             },
2026-07-26T22:33:03.1827220Z             {
2026-07-26T22:33:03.1827419Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1827515Z               "line": 214
2026-07-26T22:33:03.1827601Z             },
2026-07-26T22:33:03.1827686Z             {
2026-07-26T22:33:03.1827797Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1827887Z               "line": 247
2026-07-26T22:33:03.1827962Z             },
2026-07-26T22:33:03.1828047Z             {
2026-07-26T22:33:03.1828148Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1828237Z               "line": 424
2026-07-26T22:33:03.1828312Z             },
2026-07-26T22:33:03.1828393Z             {
2026-07-26T22:33:03.1828503Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1828594Z               "line": 461
2026-07-26T22:33:03.1828674Z             },
2026-07-26T22:33:03.1828833Z             {
2026-07-26T22:33:03.1829022Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1829109Z               "line": 475
2026-07-26T22:33:03.1829194Z             }
2026-07-26T22:33:03.1829275Z           ]
2026-07-26T22:33:03.1829356Z         },
2026-07-26T22:33:03.1829448Z         "int": {
2026-07-26T22:33:03.1829551Z           "complete": true,
2026-07-26T22:33:03.1829637Z           "evidence": [
2026-07-26T22:33:03.1829719Z             {
2026-07-26T22:33:03.1829843Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-07-26T22:33:03.1829942Z               "line": 351
2026-07-26T22:33:03.1830019Z             },
2026-07-26T22:33:03.1830096Z             {
2026-07-26T22:33:03.1830219Z               "path": "crates/spt/tests/projindex_reader_e2e.rs",
2026-07-26T22:33:03.1830305Z               "line": 18
2026-07-26T22:33:03.1830382Z             }
2026-07-26T22:33:03.1830468Z           ]
2026-07-26T22:33:03.1830548Z         },
2026-07-26T22:33:03.1830630Z         "unit": {
2026-07-26T22:33:03.1830712Z           "complete": true,
2026-07-26T22:33:03.1830811Z           "evidence": [
2026-07-26T22:33:03.1830886Z             {
2026-07-26T22:33:03.1831015Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1831091Z               "line": 1116
2026-07-26T22:33:03.1831172Z             },
2026-07-26T22:33:03.1831258Z             {
2026-07-26T22:33:03.1831378Z               "path": "crates/spt-store/src/projindex.rs",
2026-07-26T22:33:03.1831459Z               "line": 438
2026-07-26T22:33:03.1831539Z             },
2026-07-26T22:33:03.1831615Z             {
2026-07-26T22:33:03.1831721Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1831802Z               "line": 1990
2026-07-26T22:33:03.1831892Z             },
2026-07-26T22:33:03.1831973Z             {
2026-07-26T22:33:03.1832088Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1832168Z               "line": 1080
2026-07-26T22:33:03.1832254Z             },
2026-07-26T22:33:03.1832332Z             {
2026-07-26T22:33:03.1832450Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1832545Z               "line": 1185
2026-07-26T22:33:03.1832632Z             },
2026-07-26T22:33:03.1832703Z             {
2026-07-26T22:33:03.1832821Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.1832903Z               "line": 1238
2026-07-26T22:33:03.1832985Z             }
2026-07-26T22:33:03.1833064Z           ]
2026-07-26T22:33:03.1833150Z         }
2026-07-26T22:33:03.1833231Z       }
2026-07-26T22:33:03.1833321Z     },
2026-07-26T22:33:03.1833400Z     {
2026-07-26T22:33:03.1833504Z       "id": "REQ-PROJECT-INDEX-STORE",
2026-07-26T22:33:03.1835727Z       "title": "PROJECT-INDEX W1 (ADR-0037, RCA .claude/reports/2026-07-10-hertz-session/03): spt-store owns the VERSIONED materialized project-index format + read path. Reader contract: read one compact versioned index, join with the local perch roster, return immediately; stale/missing renders last-known-good or '-'; NEVER fall back to synchronous git enrichment; daemon-offline readers consume the last persisted snapshot; truncated/schema-mismatched index degrades to fast reads + last-known-good, never an error stall. Gate: impl — format + store read path; unit — version/schema-mismatch/truncation degradation legs + join semantics; doc — CONTEXT.md project-index entry + STORAGE.md section. Kin REQ-PROJECT-INDEX-WRITER (the producer), ADR-0037.",
2026-07-26T22:33:03.1835932Z       "requiredStages": [
2026-07-26T22:33:03.1836017Z         "doc",
2026-07-26T22:33:03.1836103Z         "impl",
2026-07-26T22:33:03.1836188Z         "unit"
2026-07-26T22:33:03.1836263Z       ],
2026-07-26T22:33:03.1836353Z       "stages": {
2026-07-26T22:33:03.1836439Z         "doc": {
2026-07-26T22:33:03.1836535Z           "complete": true,
2026-07-26T22:33:03.1836625Z           "evidence": [
2026-07-26T22:33:03.1836705Z             {
2026-07-26T22:33:03.1836802Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.1836992Z               "line": 602
2026-07-26T22:33:03.1837073Z             },
2026-07-26T22:33:03.1837155Z             {
2026-07-26T22:33:03.1837264Z               "path": "docs/STORAGE.md",
2026-07-26T22:33:03.1837359Z               "line": 151
2026-07-26T22:33:03.1837441Z             }
2026-07-26T22:33:03.1837531Z           ]
2026-07-26T22:33:03.1837612Z         },
2026-07-26T22:33:03.1837703Z         "impl": {
2026-07-26T22:33:03.1837784Z           "complete": true,
2026-07-26T22:33:03.1837874Z           "evidence": [
2026-07-26T22:33:03.1837955Z             {
2026-07-26T22:33:03.1838080Z               "path": "crates/spt-store/src/projindex.rs",
2026-07-26T22:33:03.1838175Z               "line": 30
2026-07-26T22:33:03.1838261Z             },
2026-07-26T22:33:03.1838352Z             {
2026-07-26T22:33:03.1838466Z               "path": "crates/spt-store/src/projindex.rs",
2026-07-26T22:33:03.1838560Z               "line": 241
2026-07-26T22:33:03.1838636Z             },
2026-07-26T22:33:03.1838722Z             {
2026-07-26T22:33:03.1838849Z               "path": "crates/spt-store/src/projindex.rs",
2026-07-26T22:33:03.1839015Z               "line": 283
2026-07-26T22:33:03.1839092Z             },
2026-07-26T22:33:03.1839178Z             {
2026-07-26T22:33:03.1839287Z               "path": "crates/spt-store/src/projindex.rs",
2026-07-26T22:33:03.1839369Z               "line": 313
2026-07-26T22:33:03.1839449Z             }
2026-07-26T22:33:03.1839530Z           ]
2026-07-26T22:33:03.1839611Z         },
2026-07-26T22:33:03.1839707Z         "int": {
2026-07-26T22:33:03.1839798Z           "complete": false,
2026-07-26T22:33:03.1839892Z           "evidence": []
2026-07-26T22:33:03.1839970Z         },
2026-07-26T22:33:03.1840050Z         "unit": {
2026-07-26T22:33:03.1840141Z           "complete": true,
2026-07-26T22:33:03.1840226Z           "evidence": [
2026-07-26T22:33:03.1840308Z             {
2026-07-26T22:33:03.1840431Z               "path": "crates/spt-store/src/projindex.rs",
2026-07-26T22:33:03.1840512Z               "line": 380
2026-07-26T22:33:03.1840594Z             },
2026-07-26T22:33:03.1840676Z             {
2026-07-26T22:33:03.1840799Z               "path": "crates/spt-store/src/projindex.rs",
2026-07-26T22:33:03.1840904Z               "line": 495
2026-07-26T22:33:03.1840995Z             },
2026-07-26T22:33:03.1841079Z             {
2026-07-26T22:33:03.1841204Z               "path": "crates/spt-store/src/projindex.rs",
2026-07-26T22:33:03.1841291Z               "line": 506
2026-07-26T22:33:03.1841371Z             },
2026-07-26T22:33:03.1841451Z             {
2026-07-26T22:33:03.1841570Z               "path": "crates/spt-store/src/projindex.rs",
2026-07-26T22:33:03.1841651Z               "line": 523
2026-07-26T22:33:03.1841732Z             },
2026-07-26T22:33:03.1841813Z             {
2026-07-26T22:33:03.1841933Z               "path": "crates/spt-store/src/projindex.rs",
2026-07-26T22:33:03.1842019Z               "line": 548
2026-07-26T22:33:03.1842089Z             }
2026-07-26T22:33:03.1842175Z           ]
2026-07-26T22:33:03.1842248Z         }
2026-07-26T22:33:03.1842338Z       }
2026-07-26T22:33:03.1842413Z     },
2026-07-26T22:33:03.1842596Z     {
2026-07-26T22:33:03.1842691Z       "id": "REQ-PROJECT-INDEX-WRITER",
2026-07-26T22:33:03.1846177Z       "title": "PROJECT-INDEX W2 (ADR-0037): the daemon is the SOLE single-flight project-index writer: load persisted index at startup; ready WITHOUT warm (cold start = daemon ready + CLI fast before background completes); background reconcile with BATCHED complexity O(P+B+F+C) — enumerate branches ONCE, <=1 tree scan per changed branch, ONE derivation per distinct normalized cwd (in-process BranchStore traversal or fixed plumbing calls; backgrounding the existing 100+ process loop is REJECTED); atomic replace; last-known-good preserved on any failure; warm start with unchanged generation performs NO scan. Observability surface: generated time, source generation, pending refresh, last duration/error, endpoint/project/cwd counts, cache hits/misses, stale reads, repair count — index presence alone is not health. Gate: impl — writer + observability; unit — single-flight, atomic-replace, last-known-good, no-scan-on-unchanged-generation; int — cold+warm start legs against a real store; COMPLEXITY COUNTERS are the CI gate (wall-clock = manual acceptance ONLY, shared-runner flake class); doc — daemon docs writer-duty section. Kin REQ-PROJECT-INDEX-STORE, REQ-PROJECT-INDEX-INVALIDATION.",
2026-07-26T22:33:03.1846403Z       "requiredStages": [
2026-07-26T22:33:03.1846487Z         "doc",
2026-07-26T22:33:03.1846568Z         "impl",
2026-07-26T22:33:03.1846643Z         "unit",
2026-07-26T22:33:03.1846725Z         "int"
2026-07-26T22:33:03.1846809Z       ],
2026-07-26T22:33:03.1846904Z       "stages": {
2026-07-26T22:33:03.1846990Z         "doc": {
2026-07-26T22:33:03.1847086Z           "complete": true,
2026-07-26T22:33:03.1847171Z           "evidence": [
2026-07-26T22:33:03.1847260Z             {
2026-07-26T22:33:03.1847358Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.1847448Z               "line": 604
2026-07-26T22:33:03.1847528Z             },
2026-07-26T22:33:03.1847619Z             {
2026-07-26T22:33:03.1847724Z               "path": "docs/STORAGE.md",
2026-07-26T22:33:03.1847810Z               "line": 177
2026-07-26T22:33:03.1847890Z             }
2026-07-26T22:33:03.1847967Z           ]
2026-07-26T22:33:03.1848049Z         },
2026-07-26T22:33:03.1848134Z         "impl": {
2026-07-26T22:33:03.1848229Z           "complete": true,
2026-07-26T22:33:03.1848321Z           "evidence": [
2026-07-26T22:33:03.1848401Z             {
2026-07-26T22:33:03.1848525Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:03.1848612Z               "line": 268
2026-07-26T22:33:03.1848697Z             },
2026-07-26T22:33:03.1848777Z             {
2026-07-26T22:33:03.1848898Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1849059Z               "line": 27
2026-07-26T22:33:03.1849148Z             },
2026-07-26T22:33:03.1849239Z             {
2026-07-26T22:33:03.1849357Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1849447Z               "line": 230
2026-07-26T22:33:03.1849527Z             },
2026-07-26T22:33:03.1849609Z             {
2026-07-26T22:33:03.1849733Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1849813Z               "line": 272
2026-07-26T22:33:03.1849890Z             },
2026-07-26T22:33:03.1849972Z             {
2026-07-26T22:33:03.1850100Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1850195Z               "line": 620
2026-07-26T22:33:03.1850277Z             },
2026-07-26T22:33:03.1850362Z             {
2026-07-26T22:33:03.1850486Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.1850577Z               "line": 263
2026-07-26T22:33:03.1850648Z             },
2026-07-26T22:33:03.1850743Z             {
2026-07-26T22:33:03.1850864Z               "path": "crates/spt-store/src/projderive.rs",
2026-07-26T22:33:03.1850959Z               "line": 12
2026-07-26T22:33:03.1851035Z             },
2026-07-26T22:33:03.1851226Z             {
2026-07-26T22:33:03.1851354Z               "path": "crates/spt-store/src/projderive.rs",
2026-07-26T22:33:03.1851445Z               "line": 82
2026-07-26T22:33:03.1851527Z             },
2026-07-26T22:33:03.1851602Z             {
2026-07-26T22:33:03.1851725Z               "path": "crates/spt-store/src/projindex.rs",
2026-07-26T22:33:03.1851818Z               "line": 185
2026-07-26T22:33:03.1851898Z             },
2026-07-26T22:33:03.1851987Z             {
2026-07-26T22:33:03.1852091Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1852178Z               "line": 4544
2026-07-26T22:33:03.1852265Z             },
2026-07-26T22:33:03.1852344Z             {
2026-07-26T22:33:03.1852445Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1852541Z               "line": 4685
2026-07-26T22:33:03.1852612Z             },
2026-07-26T22:33:03.1852779Z             {
2026-07-26T22:33:03.1852883Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1852983Z               "line": 4890
2026-07-26T22:33:03.1853069Z             }
2026-07-26T22:33:03.1853151Z           ]
2026-07-26T22:33:03.1853222Z         },
2026-07-26T22:33:03.1853312Z         "int": {
2026-07-26T22:33:03.1853394Z           "complete": true,
2026-07-26T22:33:03.1853480Z           "evidence": [
2026-07-26T22:33:03.1853560Z             {
2026-07-26T22:33:03.1853694Z               "path": "crates/spt/tests/projindex_writer_e2e.rs",
2026-07-26T22:33:03.1853781Z               "line": 18
2026-07-26T22:33:03.1853861Z             },
2026-07-26T22:33:03.1853942Z             {
2026-07-26T22:33:03.1854077Z               "path": "crates/spt/tests/projindex_writer_e2e.rs",
2026-07-26T22:33:03.1854157Z               "line": 175
2026-07-26T22:33:03.1854241Z             },
2026-07-26T22:33:03.1854322Z             {
2026-07-26T22:33:03.1854451Z               "path": "crates/spt/tests/projindex_writer_e2e.rs",
2026-07-26T22:33:03.1854539Z               "line": 245
2026-07-26T22:33:03.1854620Z             }
2026-07-26T22:33:03.1854716Z           ]
2026-07-26T22:33:03.1854793Z         },
2026-07-26T22:33:03.1854868Z         "unit": {
2026-07-26T22:33:03.1854963Z           "complete": true,
2026-07-26T22:33:03.1855055Z           "evidence": [
2026-07-26T22:33:03.1855126Z             {
2026-07-26T22:33:03.1855250Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1855331Z               "line": 766
2026-07-26T22:33:03.1855422Z             },
2026-07-26T22:33:03.1855503Z             {
2026-07-26T22:33:03.1855627Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1855713Z               "line": 835
2026-07-26T22:33:03.1855804Z             },
2026-07-26T22:33:03.1855879Z             {
2026-07-26T22:33:03.1856009Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1856084Z               "line": 864
2026-07-26T22:33:03.1856170Z             },
2026-07-26T22:33:03.1856251Z             {
2026-07-26T22:33:03.1856371Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1856456Z               "line": 951
2026-07-26T22:33:03.1856537Z             },
2026-07-26T22:33:03.1856619Z             {
2026-07-26T22:33:03.1856732Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1856819Z               "line": 1058
2026-07-26T22:33:03.1856906Z             },
2026-07-26T22:33:03.1856987Z             {
2026-07-26T22:33:03.1857104Z               "path": "crates/spt-daemon/src/projwriter.rs",
2026-07-26T22:33:03.1857189Z               "line": 1248
2026-07-26T22:33:03.1857266Z             },
2026-07-26T22:33:03.1857351Z             {
2026-07-26T22:33:03.1857468Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.1857550Z               "line": 921
2026-07-26T22:33:03.1860913Z             },
2026-07-26T22:33:03.1861012Z             {
2026-07-26T22:33:03.1861170Z               "path": "crates/spt-store/src/projderive.rs",
2026-07-26T22:33:03.1861266Z               "line": 164
2026-07-26T22:33:03.1861528Z             },
2026-07-26T22:33:03.1861651Z             {
2026-07-26T22:33:03.1861862Z               "path": "crates/spt-store/src/projderive.rs",
2026-07-26T22:33:03.1861990Z               "line": 202
2026-07-26T22:33:03.1862101Z             },
2026-07-26T22:33:03.1862190Z             {
2026-07-26T22:33:03.1862335Z               "path": "crates/spt-store/src/projderive.rs",
2026-07-26T22:33:03.1862425Z               "line": 233
2026-07-26T22:33:03.1862505Z             },
2026-07-26T22:33:03.1862590Z             {
2026-07-26T22:33:03.1862714Z               "path": "crates/spt-store/src/projindex.rs",
2026-07-26T22:33:03.1862801Z               "line": 404
2026-07-26T22:33:03.1862918Z             },
2026-07-26T22:33:03.1863000Z             {
2026-07-26T22:33:03.1863106Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1863567Z               "line": 19098
2026-07-26T22:33:03.1863664Z             }
2026-07-26T22:33:03.1863745Z           ]
2026-07-26T22:33:03.1863826Z         }
2026-07-26T22:33:03.1863911Z       }
2026-07-26T22:33:03.1863997Z     },
2026-07-26T22:33:03.1864078Z     {
2026-07-26T22:33:03.1864196Z       "id": "REQ-PSYCHE-ACCOUNT-REFUSAL-EXIT",
2026-07-26T22:33:03.1870720Z       "title": "RESERVED EXIT 96 — account/credential refusal from a psyche_resume turn: the inner tool refused for account-level reasons (spend/usage cap, expired/revoked credential, org quota) — session healthy, code healthy, retry correct-but-pointless until a HUMAN acts. Core discriminates on the EXIT CODE ALONE (text-blind, the exit-95 layering exactly: adapters own text matching because their inner tool's wording is theirs to track; core's contract survives any rewording). SEMANTICS ruled 2026-07-26: (1) OWN PACING, fully separate from the C3(b) strike budget — an account refusal fails FAST (refused before a billed turn), so ten near-instant cycles could exhaust the defect budget in seconds and kill the psyche host as a thrashing component while nothing thrashes; the strike budget is a DEFECT budget and an outage must not be able to spend it (fold-with-higher-threshold REFUSED at ruling: it keeps the bug in a quieter form). Slow capped exponential ~60s doubling to ~15m cap, held INDEFINITELY (no give-up: a cap clears on human action or a calendar boundary — unpredictable but CERTAIN — and a permanently-given-up psyche is invisible), reset on first success, no state to unwind. (2) DISTINCT SURFACE: never the defect-shaped PSYCHE_TURN_FAIL prefix — renders as its own class (adapter-side PSYCHE_TURN_REFUSED; core-side an additive class discriminator beside psyche_host_error, never a fold into it), NAMES the actor and action (a human, the inner tool's account — not the endpoint/adapter/session), carries the inner tool's own words via the dual-stream tail (REQ-PSYCHE-TURN-STREAM-EVIDENCE), and states HOW LONG it has been refused. (3) NEVER reseeds — custody is fine; a reseed would destroy a healthy transcript for nothing. (4) Never counted as a crashloop defect. Adapter contract half: claude-spt docs/design/RESERVED-EXIT-ACCOUNT-REFUSAL.md (appendix of observed CC strings is informative-not-contract, populated ONLY from observed bytes — the invented-string chain of 2026-07-26 is the anti-pattern it refuses). Gate at activation: unit — exit 96 classifies refused (no strike increment, no reseed, own backoff schedule engaged); 95/generic/None unchanged; surface renders the distinct label + duration.",
2026-07-26T22:33:03.1870862Z       "requiredStages": [
2026-07-26T22:33:03.1870943Z         "doc"
2026-07-26T22:33:03.1871020Z       ],
2026-07-26T22:33:03.1871116Z       "stages": {
2026-07-26T22:33:03.1871196Z         "doc": {
2026-07-26T22:33:03.1871301Z           "complete": true,
2026-07-26T22:33:03.1871383Z           "evidence": [
2026-07-26T22:33:03.1871459Z             {
2026-07-26T22:33:03.1871606Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-07-26T22:33:03.1871702Z               "line": 187
2026-07-26T22:33:03.1871783Z             }
2026-07-26T22:33:03.1871863Z           ]
2026-07-26T22:33:03.1872045Z         },
2026-07-26T22:33:03.1872136Z         "impl": {
2026-07-26T22:33:03.1872216Z           "complete": false,
2026-07-26T22:33:03.1872309Z           "evidence": []
2026-07-26T22:33:03.1872384Z         },
2026-07-26T22:33:03.1872474Z         "int": {
2026-07-26T22:33:03.1872550Z           "complete": false,
2026-07-26T22:33:03.1872647Z           "evidence": []
2026-07-26T22:33:03.1872727Z         },
2026-07-26T22:33:03.1872808Z         "unit": {
2026-07-26T22:33:03.1872895Z           "complete": false,
2026-07-26T22:33:03.1872985Z           "evidence": []
2026-07-26T22:33:03.1873070Z         }
2026-07-26T22:33:03.1873155Z       }
2026-07-26T22:33:03.1873236Z     },
2026-07-26T22:33:03.1873313Z     {
2026-07-26T22:33:03.1873441Z       "id": "REQ-PSYCHE-CONTEXT-FILE-INDIRECTION",
2026-07-26T22:33:03.1877638Z       "title": "W4 (F030; doyle Q2 ruling + perri file-always freeze, 2026-07-04): the composed psyche mind ({psyche_context}) rides the SHIM argv today — a real ~20KB doyle psyche-download exceeds the win32 CreateProcess lpCommandLine ~32k cap → the shim spawn BRICKS. FIX (file-always, replaces {psyche_context} outright — no size-branch, no argv cliff, one path): core writes the mind to a file in the psyche's NESTED perch dir BEFORE each turn spawn and fills a single {psyche_context_file} = that PATH (argv-cap-immune). The soft fresh/continue discriminator moves from KEY-presence to FILE-CONTENT: FreshWithPreload writes the composed mind NON-EMPTY (the <fresh-psyche/> never-empty guarantee carries to the file content); ContinueExisting writes it TRULY 0-BYTE (perri BINDING PIN 1 — NO sentinel/placeholder EVER, else her non-empty=fresh discriminator misfires a spurious --session-id adopt). Core owns the file lifecycle: write-before-spawn each turn, overwrite in place, persists between turns in the nested perch (debuggability); never deleted per turn. perri shim delta: --psyche-context-file <path> arg, read-file prefix, TRIM-based emptiness (her tolerance, NOT core's license — core writes exactly 0 bytes on continue, PIN 2), read-failure = generic fail NEVER 95, never writes/deletes the file. Red-first: a ~40KB mind → the old {psyche_context}-on-argv path BRICKS the win32 shim spawn; the file path succeeds (shim reads the full mind from file).",
2026-07-26T22:33:03.1877876Z       "requiredStages": [
2026-07-26T22:33:03.1877967Z         "doc",
2026-07-26T22:33:03.1878050Z         "impl",
2026-07-26T22:33:03.1878131Z         "unit",
2026-07-26T22:33:03.1878201Z         "int"
2026-07-26T22:33:03.1878291Z       ],
2026-07-26T22:33:03.1878377Z       "stages": {
2026-07-26T22:33:03.1878467Z         "doc": {
2026-07-26T22:33:03.1878560Z           "complete": true,
2026-07-26T22:33:03.1878650Z           "evidence": [
2026-07-26T22:33:03.1878722Z             {
2026-07-26T22:33:03.1878828Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.1878913Z               "line": 129
2026-07-26T22:33:03.1879090Z             }
2026-07-26T22:33:03.1879171Z           ]
2026-07-26T22:33:03.1879266Z         },
2026-07-26T22:33:03.1879353Z         "impl": {
2026-07-26T22:33:03.1879442Z           "complete": true,
2026-07-26T22:33:03.1879523Z           "evidence": [
2026-07-26T22:33:03.1879604Z             {
2026-07-26T22:33:03.1879724Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1879815Z               "line": 95
2026-07-26T22:33:03.1879890Z             },
2026-07-26T22:33:03.1879977Z             {
2026-07-26T22:33:03.1880100Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1880195Z               "line": 171
2026-07-26T22:33:03.1880278Z             }
2026-07-26T22:33:03.1880359Z           ]
2026-07-26T22:33:03.1880438Z         },
2026-07-26T22:33:03.1880525Z         "int": {
2026-07-26T22:33:03.1880607Z           "complete": true,
2026-07-26T22:33:03.1880702Z           "evidence": [
2026-07-26T22:33:03.1880791Z             {
2026-07-26T22:33:03.1880948Z               "path": "crates/spt-daemon/tests/psyche_context_file_e2e.rs",
2026-07-26T22:33:03.1881132Z               "line": 28
2026-07-26T22:33:03.1881212Z             },
2026-07-26T22:33:03.1881289Z             {
2026-07-26T22:33:03.1881442Z               "path": "crates/spt-daemon/tests/psyche_context_file_e2e.rs",
2026-07-26T22:33:03.1881532Z               "line": 120
2026-07-26T22:33:03.1881614Z             },
2026-07-26T22:33:03.1881695Z             {
2026-07-26T22:33:03.1881851Z               "path": "crates/spt-daemon/tests/psyche_context_file_e2e.rs",
2026-07-26T22:33:03.1881934Z               "line": 188
2026-07-26T22:33:03.1882014Z             }
2026-07-26T22:33:03.1882094Z           ]
2026-07-26T22:33:03.1882176Z         },
2026-07-26T22:33:03.1882253Z         "unit": {
2026-07-26T22:33:03.1882343Z           "complete": true,
2026-07-26T22:33:03.1882428Z           "evidence": [
2026-07-26T22:33:03.1882510Z             {
2026-07-26T22:33:03.1882748Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1882839Z               "line": 1729
2026-07-26T22:33:03.1882930Z             },
2026-07-26T22:33:03.1883010Z             {
2026-07-26T22:33:03.1883135Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1883217Z               "line": 1833
2026-07-26T22:33:03.1883296Z             }
2026-07-26T22:33:03.1883373Z           ]
2026-07-26T22:33:03.1883460Z         }
2026-07-26T22:33:03.1883546Z       }
2026-07-26T22:33:03.1883620Z     },
2026-07-26T22:33:03.1883696Z     {
2026-07-26T22:33:03.1883825Z       "id": "REQ-PSYCHE-CRASHLOOP-BACKOFF-SHUTDOWN",
2026-07-26T22:33:03.1885704Z       "title": "C3 (F028, perri F-h): psyche wrapper crash-loop has no backoff, and `endpoint shutdown` misses a wedged wrapper. A probe psyche crash-looped ~3 boots/sec for ~30min (CC died instantly on the untrusted owlery cwd; ledger hit ordinal 5358) — SILENTLY; and `spt endpoint shutdown` did NOT tear the looping wrapper down (docs say shutdown tears the Psyche with the perch; manual kill was required). FIX: (i) bounded backoff + loud give-up on a psyche boot loop (the psyche_host_error surface already exists), (ii) shutdown must cover a wedged/looping wrapper. See triage C3.",
2026-07-26T22:33:03.1885818Z       "requiredStages": [],
2026-07-26T22:33:03.1885908Z       "stages": {
2026-07-26T22:33:03.1886003Z         "doc": {
2026-07-26T22:33:03.1886122Z           "complete": false,
2026-07-26T22:33:03.1886220Z           "evidence": []
2026-07-26T22:33:03.1886291Z         },
2026-07-26T22:33:03.1886377Z         "impl": {
2026-07-26T22:33:03.1886468Z           "complete": true,
2026-07-26T22:33:03.1886554Z           "evidence": [
2026-07-26T22:33:03.1886639Z             {
2026-07-26T22:33:03.1886745Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.1886826Z               "line": 611
2026-07-26T22:33:03.1886911Z             },
2026-07-26T22:33:03.1886987Z             {
2026-07-26T22:33:03.1887093Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.1887174Z               "line": 684
2026-07-26T22:33:03.1887254Z             },
2026-07-26T22:33:03.1887337Z             {
2026-07-26T22:33:03.1887441Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.1887527Z               "line": 723
2026-07-26T22:33:03.1887608Z             }
2026-07-26T22:33:03.1887689Z           ]
2026-07-26T22:33:03.1887760Z         },
2026-07-26T22:33:03.1887851Z         "int": {
2026-07-26T22:33:03.1887941Z           "complete": false,
2026-07-26T22:33:03.1888033Z           "evidence": []
2026-07-26T22:33:03.1888113Z         },
2026-07-26T22:33:03.1888198Z         "unit": {
2026-07-26T22:33:03.1888286Z           "complete": true,
2026-07-26T22:33:03.1888376Z           "evidence": [
2026-07-26T22:33:03.1888451Z             {
2026-07-26T22:33:03.1888547Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.1888634Z               "line": 955
2026-07-26T22:33:03.1888724Z             },
2026-07-26T22:33:03.1888803Z             {
2026-07-26T22:33:03.1888918Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.1889201Z               "line": 1049
2026-07-26T22:33:03.1889278Z             },
2026-07-26T22:33:03.1889354Z             {
2026-07-26T22:33:03.1889468Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.1889554Z               "line": 1094
2026-07-26T22:33:03.1889641Z             }
2026-07-26T22:33:03.1889722Z           ]
2026-07-26T22:33:03.1889802Z         }
2026-07-26T22:33:03.1889879Z       }
2026-07-26T22:33:03.1889961Z     },
2026-07-26T22:33:03.1890042Z     {
2026-07-26T22:33:03.1890145Z       "id": "REQ-PSYCHE-EPHEMERAL-DRIVER",
2026-07-26T22:33:03.1893332Z       "title": "W1 (F030, design §3): each psyche-relevant event runs exactly ONE bounded per-event turn through the existing driver stack (psyche_turn_and_relay for outbound-intent events / resume_psyche for session-custody transitions / run_psyche_turn for pure merges) — no resident psyche process exists between events. host_one (livehost.rs:518) STOPS spawning spawn_psyche_owned; the pulse loop stays as the daemon-side scheduler (thread + stop-flag + drop-dir watch correct) but a fire now invokes one bounded turn, daemon-driving every substitution key from daemon-known context (child never self-resolves home/subnet/perch — direction-(a) multi-subnet churn impossible by construction). Turn failures consume a bounded failure budget (C3(b) shape): N consecutive failures → psyche_host_error stamp + cooldown, reset on success; no respawn storm (nothing resident to respawn). Red-first: fire an event on a hosted live endpoint → assert one turn ran (SIDE-EFFECT PROOF FILE — transcript-jsonl asserts are structurally blind, 2026-07-04 rig lesson) and no {id}-psyche process survives the turn.",
2026-07-26T22:33:03.1893532Z       "requiredStages": [
2026-07-26T22:33:03.1893618Z         "doc",
2026-07-26T22:33:03.1893695Z         "impl",
2026-07-26T22:33:03.1893782Z         "unit",
2026-07-26T22:33:03.1893875Z         "int"
2026-07-26T22:33:03.1893952Z       ],
2026-07-26T22:33:03.1894034Z       "stages": {
2026-07-26T22:33:03.1894125Z         "doc": {
2026-07-26T22:33:03.1894218Z           "complete": true,
2026-07-26T22:33:03.1894294Z           "evidence": [
2026-07-26T22:33:03.1894370Z             {
2026-07-26T22:33:03.1894467Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.1894547Z               "line": 241
2026-07-26T22:33:03.1894627Z             },
2026-07-26T22:33:03.1894709Z             {
2026-07-26T22:33:03.1894800Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.1894895Z               "line": 123
2026-07-26T22:33:03.1894976Z             },
2026-07-26T22:33:03.1895058Z             {
2026-07-26T22:33:03.1895243Z               "path": "docs/adr/0025-live-daemon-coordinated-adapter-update.md",
2026-07-26T22:33:03.1895324Z               "line": 69
2026-07-26T22:33:03.1895401Z             }
2026-07-26T22:33:03.1895486Z           ]
2026-07-26T22:33:03.1895562Z         },
2026-07-26T22:33:03.1895654Z         "impl": {
2026-07-26T22:33:03.1895744Z           "complete": true,
2026-07-26T22:33:03.1895839Z           "evidence": [
2026-07-26T22:33:03.1895925Z             {
2026-07-26T22:33:03.1896059Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1896144Z               "line": 128
2026-07-26T22:33:03.1896225Z             },
2026-07-26T22:33:03.1896313Z             {
2026-07-26T22:33:03.1896430Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1896520Z               "line": 135
2026-07-26T22:33:03.1896606Z             },
2026-07-26T22:33:03.1896687Z             {
2026-07-26T22:33:03.1896809Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1896880Z               "line": 653
2026-07-26T22:33:03.1896961Z             },
2026-07-26T22:33:03.1897043Z             {
2026-07-26T22:33:03.1897180Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1897262Z               "line": 729
2026-07-26T22:33:03.1897344Z             },
2026-07-26T22:33:03.1897429Z             {
2026-07-26T22:33:03.1897625Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1897705Z               "line": 907
2026-07-26T22:33:03.1897786Z             },
2026-07-26T22:33:03.1897867Z             {
2026-07-26T22:33:03.1897977Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1898067Z               "line": 917
2026-07-26T22:33:03.1898153Z             },
2026-07-26T22:33:03.1898240Z             {
2026-07-26T22:33:03.1898353Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1898434Z               "line": 1000
2026-07-26T22:33:03.1898516Z             },
2026-07-26T22:33:03.1898593Z             {
2026-07-26T22:33:03.1898706Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1898802Z               "line": 1090
2026-07-26T22:33:03.1898874Z             },
2026-07-26T22:33:03.1899112Z             {
2026-07-26T22:33:03.1899242Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1899335Z               "line": 1189
2026-07-26T22:33:03.1899415Z             },
2026-07-26T22:33:03.1899497Z             {
2026-07-26T22:33:03.1899619Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.1899704Z               "line": 648
2026-07-26T22:33:03.1899785Z             },
2026-07-26T22:33:03.1899862Z             {
2026-07-26T22:33:03.1899976Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.1900061Z               "line": 154
2026-07-26T22:33:03.1900139Z             }
2026-07-26T22:33:03.1900220Z           ]
2026-07-26T22:33:03.1900301Z         },
2026-07-26T22:33:03.1900390Z         "int": {
2026-07-26T22:33:03.1900468Z           "complete": true,
2026-07-26T22:33:03.1900563Z           "evidence": [
2026-07-26T22:33:03.1900639Z             {
2026-07-26T22:33:03.1900797Z               "path": "crates/spt-daemon/tests/psyche_event_turn_e2e.rs",
2026-07-26T22:33:03.1900892Z               "line": 22
2026-07-26T22:33:03.1900973Z             },
2026-07-26T22:33:03.1901058Z             {
2026-07-26T22:33:03.1901197Z               "path": "crates/spt-daemon/tests/psyche_event_turn_e2e.rs",
2026-07-26T22:33:03.1901278Z               "line": 80
2026-07-26T22:33:03.1901354Z             },
2026-07-26T22:33:03.1901436Z             {
2026-07-26T22:33:03.1901607Z               "path": "crates/spt-daemon/tests/psyche_event_turn_e2e.rs",
2026-07-26T22:33:03.1901698Z               "line": 144
2026-07-26T22:33:03.1901794Z             }
2026-07-26T22:33:03.1901902Z           ]
2026-07-26T22:33:03.1901982Z         },
2026-07-26T22:33:03.1902068Z         "unit": {
2026-07-26T22:33:03.1902149Z           "complete": true,
2026-07-26T22:33:03.1902242Z           "evidence": [
2026-07-26T22:33:03.1902362Z             {
2026-07-26T22:33:03.1902492Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1902590Z               "line": 1590
2026-07-26T22:33:03.1902686Z             },
2026-07-26T22:33:03.1902791Z             {
2026-07-26T22:33:03.1902914Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1903011Z               "line": 1617
2026-07-26T22:33:03.1903087Z             },
2026-07-26T22:33:03.1903159Z             {
2026-07-26T22:33:03.1903296Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1903397Z               "line": 1630
2026-07-26T22:33:03.1903477Z             }
2026-07-26T22:33:03.1903558Z           ]
2026-07-26T22:33:03.1903635Z         }
2026-07-26T22:33:03.1903722Z       }
2026-07-26T22:33:03.1903802Z     },
2026-07-26T22:33:03.1903887Z     {
2026-07-26T22:33:03.1904008Z       "id": "REQ-PSYCHE-LEGACY-RESIDENT-SWEEP",
2026-07-26T22:33:03.1909848Z       "title": "W5 (F030; doyle+perri 2026-07-04): a dirty daemon upgrade from <=v0.24.0 strands a RESIDENT psyche wrapper the OLD daemon spawned — and F-030 W4's nested-`ready` resolution fix CONVERTED that wrapper's accidental self-reap into a permanent HANG. The pre-W3 wrapper's only spt IPC is `spt ready <parent>-psyche --once` (BLOCKING, no internal timeout); pre-W4 that hit READY_FAIL on a multi-subnet home → the wrapper exit-4'd (accidental reap). Post-W4 the nested id resolves cleanly → the wrapper REGISTERS then BLOCKS FOREVER on its first post-upgrade poll: no exit, no psyche_host_error, no CPU (KH 2.6 invisible-loop class, one level up). Post-W3 core has no residency machinery to reap it. FIX: a ONE-SHOT legacy-resident sweep at BRAIN START (never per-reconcile/periodic — burying residency-era machinery, not resurrecting it). GUARD = adapter-AGNOSTIC (glue-model): resurrect the retired reap_orphan_psyches LOGIC — for each self-perch live-agent id derive `<id>-psyche` and kill iff (a) exe basename == the adapter's MANIFEST-declared psyche program (normalize_basename, never a hardcoded adapter name) AND (b) cmdline contains the id marker `<id>-psyche` AND (c) pid alive; any unreadable signal → DECLINE + loud log (fail-safe-decline, positive-match-only; infra never-kill inside the sweep). FRATRICIDE is closed by TIMING (perri-confirmed from the owning side): the ephemeral shim is daemon-spawned per-event, bounded, exits at turn end — at brain start BEFORE the first reconcile/pulse no current shim is resident, so any `<id>-psyche` psyche-program process alive then is unambiguously stranded-legacy. RESIDUE (doyle PIN 3): the hung wrapper REGISTERED a `<parent>-psyche` ready perch before blocking; killing the pid alone leaves a phantom ready-record with a dead pid (the REMOTE-TRUTH presence-lie class) — the sweep MUST also clear that stale registration or prove the existing stale-perch cleanup reaps it. No field window pre-W6 (nothing releases). (F-030 W5)",
2026-07-26T22:33:03.1910165Z       "requiredStages": [
2026-07-26T22:33:03.1910236Z         "impl",
2026-07-26T22:33:03.1910316Z         "unit",
2026-07-26T22:33:03.1910394Z         "int"
2026-07-26T22:33:03.1910475Z       ],
2026-07-26T22:33:03.1910560Z       "stages": {
2026-07-26T22:33:03.1910641Z         "doc": {
2026-07-26T22:33:03.1910742Z           "complete": false,
2026-07-26T22:33:03.1910842Z           "evidence": []
2026-07-26T22:33:03.1910926Z         },
2026-07-26T22:33:03.1911014Z         "impl": {
2026-07-26T22:33:03.1911095Z           "complete": true,
2026-07-26T22:33:03.1911176Z           "evidence": [
2026-07-26T22:33:03.1911255Z             {
2026-07-26T22:33:03.1911395Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.1911480Z               "line": 931
2026-07-26T22:33:03.1911570Z             },
2026-07-26T22:33:03.1911648Z             {
2026-07-26T22:33:03.1911771Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.1911852Z               "line": 949
2026-07-26T22:33:03.1911938Z             },
2026-07-26T22:33:03.1912015Z             {
2026-07-26T22:33:03.1912133Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.1912214Z               "line": 982
2026-07-26T22:33:03.1912316Z             },
2026-07-26T22:33:03.1912420Z             {
2026-07-26T22:33:03.1912538Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.1912633Z               "line": 1000
2026-07-26T22:33:03.1912746Z             },
2026-07-26T22:33:03.1912840Z             {
2026-07-26T22:33:03.1912960Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.1913047Z               "line": 1069
2026-07-26T22:33:03.1913122Z             },
2026-07-26T22:33:03.1913203Z             {
2026-07-26T22:33:03.1913319Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.1913409Z               "line": 1150
2026-07-26T22:33:03.1913489Z             }
2026-07-26T22:33:03.1913566Z           ]
2026-07-26T22:33:03.1913647Z         },
2026-07-26T22:33:03.1913728Z         "int": {
2026-07-26T22:33:03.1913813Z           "complete": true,
2026-07-26T22:33:03.1913900Z           "evidence": [
2026-07-26T22:33:03.1913971Z             {
2026-07-26T22:33:03.1914137Z               "path": "crates/spt-daemon/tests/legacy_resident_sweep_e2e.rs",
2026-07-26T22:33:03.1914224Z               "line": 30
2026-07-26T22:33:03.1914428Z             }
2026-07-26T22:33:03.1914500Z           ]
2026-07-26T22:33:03.1914577Z         },
2026-07-26T22:33:03.1914657Z         "unit": {
2026-07-26T22:33:03.1914757Z           "complete": true,
2026-07-26T22:33:03.1914835Z           "evidence": [
2026-07-26T22:33:03.1914916Z             {
2026-07-26T22:33:03.1915044Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.1915140Z               "line": 2152
2026-07-26T22:33:03.1915226Z             },
2026-07-26T22:33:03.1915310Z             {
2026-07-26T22:33:03.1915428Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.1915524Z               "line": 2215
2026-07-26T22:33:03.1915607Z             }
2026-07-26T22:33:03.1915695Z           ]
2026-07-26T22:33:03.1915772Z         }
2026-07-26T22:33:03.1915854Z       }
2026-07-26T22:33:03.1916005Z     },
2026-07-26T22:33:03.1916086Z     {
2026-07-26T22:33:03.1916193Z       "id": "REQ-PSYCHE-NESTED-RESOLUTION",
2026-07-26T22:33:03.1919297Z       "title": "W4 (F030, design §3; F-017 sibling, general not psyche-only): nested {parent}/{nested} ids resolve under the PARENT's home — subnet-less resolution for nested perches (the home-ASSIGNMENT seam, not perch-path which is already subnet-less) — so child-side verbs acting on nested perches need no --subnet the child cannot know. ROOT: home::assign_home returns Ambiguous on a multi-subnet node w/o --subnet; a nested id must instead derive home from its parent perch. Additionally expose a SINGLE {subnet} base_keys fill WHEN KNOWN (own_subnet = home-subnet label, 'local' when unhomed; absent → LOUD missing-key fail, the {node} precedent). NO {home} key (doyle W4 Q1: the endpoint home subnet is ONE concept per CONTEXT.md:640, and 'home:' is already the subnet-name qualifier position CONTEXT.md:652 — a {home} template key invites meaning-drift). Red-first = evidence #3's exact repro: 2-subnet home, nested-id verb, must succeed (was: `spt ready <id> --once` → exit 1 READY_FAIL … pass --subnet).",
2026-07-26T22:33:03.1919417Z       "requiredStages": [
2026-07-26T22:33:03.1919502Z         "doc",
2026-07-26T22:33:03.1919588Z         "impl",
2026-07-26T22:33:03.1919666Z         "unit",
2026-07-26T22:33:03.1919746Z         "int"
2026-07-26T22:33:03.1919826Z       ],
2026-07-26T22:33:03.1919912Z       "stages": {
2026-07-26T22:33:03.1919990Z         "doc": {
2026-07-26T22:33:03.1920084Z           "complete": true,
2026-07-26T22:33:03.1920170Z           "evidence": [
2026-07-26T22:33:03.1920237Z             {
2026-07-26T22:33:03.1920333Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.1920418Z               "line": 132
2026-07-26T22:33:03.1920498Z             }
2026-07-26T22:33:03.1920574Z           ]
2026-07-26T22:33:03.1920655Z         },
2026-07-26T22:33:03.1920744Z         "impl": {
2026-07-26T22:33:03.1920843Z           "complete": true,
2026-07-26T22:33:03.1920944Z           "evidence": [
2026-07-26T22:33:03.1921016Z             {
2026-07-26T22:33:03.1921130Z               "path": "crates/spt-msg/src/ready.rs",
2026-07-26T22:33:03.1921230Z               "line": 88
2026-07-26T22:33:03.1921316Z             },
2026-07-26T22:33:03.1921397Z             {
2026-07-26T22:33:03.1921510Z               "path": "crates/spt-store/src/home.rs",
2026-07-26T22:33:03.1921598Z               "line": 101
2026-07-26T22:33:03.1921683Z             },
2026-07-26T22:33:03.1921759Z             {
2026-07-26T22:33:03.1921869Z               "path": "crates/spt-store/src/home.rs",
2026-07-26T22:33:03.1921960Z               "line": 122
2026-07-26T22:33:03.1922045Z             },
2026-07-26T22:33:03.1922126Z             {
2026-07-26T22:33:03.1922237Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.1922331Z               "line": 404
2026-07-26T22:33:03.1922408Z             }
2026-07-26T22:33:03.1922489Z           ]
2026-07-26T22:33:03.1922575Z         },
2026-07-26T22:33:03.1922665Z         "int": {
2026-07-26T22:33:03.1922751Z           "complete": true,
2026-07-26T22:33:03.1922852Z           "evidence": [
2026-07-26T22:33:03.1923027Z             {
2026-07-26T22:33:03.1923174Z               "path": "crates/spt/tests/nested_resolution_e2e.rs",
2026-07-26T22:33:03.1923269Z               "line": 22
2026-07-26T22:33:03.1923353Z             },
2026-07-26T22:33:03.1923429Z             {
2026-07-26T22:33:03.1923559Z               "path": "crates/spt/tests/nested_resolution_e2e.rs",
2026-07-26T22:33:03.1923654Z               "line": 73
2026-07-26T22:33:03.1923739Z             }
2026-07-26T22:33:03.1923816Z           ]
2026-07-26T22:33:03.1923897Z         },
2026-07-26T22:33:03.1923978Z         "unit": {
2026-07-26T22:33:03.1924063Z           "complete": true,
2026-07-26T22:33:03.1924155Z           "evidence": [
2026-07-26T22:33:03.1924231Z             {
2026-07-26T22:33:03.1924358Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1924546Z               "line": 1793
2026-07-26T22:33:03.1924622Z             },
2026-07-26T22:33:03.1924702Z             {
2026-07-26T22:33:03.1924818Z               "path": "crates/spt-store/src/home.rs",
2026-07-26T22:33:03.1924907Z               "line": 528
2026-07-26T22:33:03.1924988Z             },
2026-07-26T22:33:03.1925060Z             {
2026-07-26T22:33:03.1925175Z               "path": "crates/spt-store/src/home.rs",
2026-07-26T22:33:03.1925260Z               "line": 563
2026-07-26T22:33:03.1925351Z             }
2026-07-26T22:33:03.1925424Z           ]
2026-07-26T22:33:03.1925504Z         }
2026-07-26T22:33:03.1925589Z       }
2026-07-26T22:33:03.1925676Z     },
2026-07-26T22:33:03.1925753Z     {
2026-07-26T22:33:03.1925871Z       "id": "REQ-PSYCHE-ROLE-OPTIONAL-SKIP",
2026-07-26T22:33:03.1926957Z       "title": "W1 (LIFECYCLE-TRUTH): a manifest with NO [session.echo_commune] role SKIPS commune-sync (debug-level note, no strike) instead of hard-failing the turn. ROOT (perri filing, recovered): missing role -> commune-sync hard-fails -> 3-strike stamps the host ('manifest declares no [session.echo_commune] role') while the published contract presents the role as an optional template. FIX: missing OPTIONAL role = skip, not a turn failure.",
2026-07-26T22:33:03.1927072Z       "requiredStages": [
2026-07-26T22:33:03.1927152Z         "impl",
2026-07-26T22:33:03.1927233Z         "unit"
2026-07-26T22:33:03.1927330Z       ],
2026-07-26T22:33:03.1927411Z       "stages": {
2026-07-26T22:33:03.1927491Z         "doc": {
2026-07-26T22:33:03.1927586Z           "complete": false,
2026-07-26T22:33:03.1927688Z           "evidence": []
2026-07-26T22:33:03.1927767Z         },
2026-07-26T22:33:03.1927858Z         "impl": {
2026-07-26T22:33:03.1927954Z           "complete": true,
2026-07-26T22:33:03.1928045Z           "evidence": [
2026-07-26T22:33:03.1928129Z             {
2026-07-26T22:33:03.1928257Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1928348Z               "line": 283
2026-07-26T22:33:03.1928441Z             },
2026-07-26T22:33:03.1928522Z             {
2026-07-26T22:33:03.1928647Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1928738Z               "line": 855
2026-07-26T22:33:03.1928813Z             }
2026-07-26T22:33:03.1928894Z           ]
2026-07-26T22:33:03.1929062Z         },
2026-07-26T22:33:03.1929142Z         "int": {
2026-07-26T22:33:03.1929238Z           "complete": false,
2026-07-26T22:33:03.1929319Z           "evidence": []
2026-07-26T22:33:03.1929405Z         },
2026-07-26T22:33:03.1929485Z         "unit": {
2026-07-26T22:33:03.1929577Z           "complete": true,
2026-07-26T22:33:03.1929667Z           "evidence": [
2026-07-26T22:33:03.1929743Z             {
2026-07-26T22:33:03.1929862Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1929953Z               "line": 2244
2026-07-26T22:33:03.1930034Z             }
2026-07-26T22:33:03.1930110Z           ]
2026-07-26T22:33:03.1930182Z         }
2026-07-26T22:33:03.1930259Z       }
2026-07-26T22:33:03.1930339Z     },
2026-07-26T22:33:03.1930420Z     {
2026-07-26T22:33:03.1930521Z       "id": "REQ-PSYCHE-SID-CUSTODY",
2026-07-26T22:33:03.1933517Z       "title": "W2 (F030, design §3): the psyche mints and keeps its OWN session id, stored in the nested {id}-psyche perch record — {session_id} in psyche role templates becomes the psyche's sid, never the parent's (today's fill at livehost.rs:518 is the PARENT's — the custody bug). Parent boundary (/clear, /compact) does NOT rotate the psyche sid (the psyche's conversational thread survives parent resets — its job). resume_psyche validates the custody key before spawn (resume.rs:183). Reseed path: psyche session lost/invalid → ResumeMode::FreshWithPreload (download_psyche_context composes role/live/project into {psyche_context}, resume.rs:100) + LOUD PSYCHE_RESEED:{id} marker (custody-loss loop visible; W1 budget bounds it). If the parent sid is still needed by a template it gets its OWN explicit key {parent_session_id} — never aliased. Red-first: parent `api boundary clear` → nested perch sid UNCHANGED (today it is the parent's — guard-revert reproduces).",
2026-07-26T22:33:03.1933734Z       "requiredStages": [
2026-07-26T22:33:03.1933820Z         "doc",
2026-07-26T22:33:03.1933899Z         "impl",
2026-07-26T22:33:03.1933979Z         "unit",
2026-07-26T22:33:03.1934061Z         "int"
2026-07-26T22:33:03.1934148Z       ],
2026-07-26T22:33:03.1934223Z       "stages": {
2026-07-26T22:33:03.1934308Z         "doc": {
2026-07-26T22:33:03.1934400Z           "complete": true,
2026-07-26T22:33:03.1934481Z           "evidence": [
2026-07-26T22:33:03.1934557Z             {
2026-07-26T22:33:03.1934701Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-07-26T22:33:03.1934777Z               "line": 188
2026-07-26T22:33:03.1934858Z             },
2026-07-26T22:33:03.1934938Z             {
2026-07-26T22:33:03.1935039Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.1935125Z               "line": 126
2026-07-26T22:33:03.1935210Z             },
2026-07-26T22:33:03.1935291Z             {
2026-07-26T22:33:03.1935392Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.1935487Z               "line": 135
2026-07-26T22:33:03.1935572Z             }
2026-07-26T22:33:03.1935650Z           ]
2026-07-26T22:33:03.1935740Z         },
2026-07-26T22:33:03.1935820Z         "impl": {
2026-07-26T22:33:03.1935916Z           "complete": true,
2026-07-26T22:33:03.1935998Z           "evidence": [
2026-07-26T22:33:03.1936078Z             {
2026-07-26T22:33:03.1936202Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1936294Z               "line": 155
2026-07-26T22:33:03.1936379Z             },
2026-07-26T22:33:03.1936463Z             {
2026-07-26T22:33:03.1936582Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1936679Z               "line": 170
2026-07-26T22:33:03.1936760Z             },
2026-07-26T22:33:03.1936849Z             {
2026-07-26T22:33:03.1936974Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1937065Z               "line": 1001
2026-07-26T22:33:03.1937135Z             },
2026-07-26T22:33:03.1937231Z             {
2026-07-26T22:33:03.1937350Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1937436Z               "line": 1041
2026-07-26T22:33:03.1937517Z             },
2026-07-26T22:33:03.1937594Z             {
2026-07-26T22:33:03.1937712Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1937798Z               "line": 1110
2026-07-26T22:33:03.1937890Z             },
2026-07-26T22:33:03.1937966Z             {
2026-07-26T22:33:03.1938089Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1938170Z               "line": 1132
2026-07-26T22:33:03.1938252Z             },
2026-07-26T22:33:03.1938337Z             {
2026-07-26T22:33:03.1938461Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1938558Z               "line": 1162
2026-07-26T22:33:03.1938643Z             },
2026-07-26T22:33:03.1938722Z             {
2026-07-26T22:33:03.1938846Z               "path": "crates/spt-store/src/psyche_custody.rs",
2026-07-26T22:33:03.1939083Z               "line": 26
2026-07-26T22:33:03.1939173Z             },
2026-07-26T22:33:03.1939250Z             {
2026-07-26T22:33:03.1939378Z               "path": "crates/spt-store/src/psyche_custody.rs",
2026-07-26T22:33:03.1939459Z               "line": 56
2026-07-26T22:33:03.1939546Z             },
2026-07-26T22:33:03.1939622Z             {
2026-07-26T22:33:03.1939745Z               "path": "crates/spt-store/src/psyche_custody.rs",
2026-07-26T22:33:03.1939827Z               "line": 65
2026-07-26T22:33:03.1939912Z             },
2026-07-26T22:33:03.1939988Z             {
2026-07-26T22:33:03.1940118Z               "path": "crates/spt-store/src/psyche_custody.rs",
2026-07-26T22:33:03.1940204Z               "line": 83
2026-07-26T22:33:03.1940289Z             },
2026-07-26T22:33:03.1940480Z             {
2026-07-26T22:33:03.1940599Z               "path": "crates/spt-store/src/psyche_custody.rs",
2026-07-26T22:33:03.1940689Z               "line": 124
2026-07-26T22:33:03.1940781Z             }
2026-07-26T22:33:03.1940861Z           ]
2026-07-26T22:33:03.1940937Z         },
2026-07-26T22:33:03.1941013Z         "int": {
2026-07-26T22:33:03.1941110Z           "complete": true,
2026-07-26T22:33:03.1941190Z           "evidence": [
2026-07-26T22:33:03.1941280Z             {
2026-07-26T22:33:03.1941415Z               "path": "crates/spt/tests/psyche_sid_custody_e2e.rs",
2026-07-26T22:33:03.1941505Z               "line": 28
2026-07-26T22:33:03.1941585Z             },
2026-07-26T22:33:03.1941665Z             {
2026-07-26T22:33:03.1941790Z               "path": "crates/spt/tests/psyche_sid_custody_e2e.rs",
2026-07-26T22:33:03.1941887Z               "line": 237
2026-07-26T22:33:03.1941973Z             }
2026-07-26T22:33:03.1942045Z           ]
2026-07-26T22:33:03.1942136Z         },
2026-07-26T22:33:03.1942226Z         "unit": {
2026-07-26T22:33:03.1942326Z           "complete": true,
2026-07-26T22:33:03.1942408Z           "evidence": [
2026-07-26T22:33:03.1942503Z             {
2026-07-26T22:33:03.1942626Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1942728Z               "line": 1729
2026-07-26T22:33:03.1942813Z             },
2026-07-26T22:33:03.1942898Z             {
2026-07-26T22:33:03.1943023Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1943118Z               "line": 1898
2026-07-26T22:33:03.1943203Z             },
2026-07-26T22:33:03.1943284Z             {
2026-07-26T22:33:03.1943399Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1943489Z               "line": 1927
2026-07-26T22:33:03.1943571Z             },
2026-07-26T22:33:03.1943667Z             {
2026-07-26T22:33:03.1943790Z               "path": "crates/spt-store/src/psyche_custody.rs",
2026-07-26T22:33:03.1943881Z               "line": 137
2026-07-26T22:33:03.1943963Z             },
2026-07-26T22:33:03.1944043Z             {
2026-07-26T22:33:03.1944171Z               "path": "crates/spt-store/src/psyche_custody.rs",
2026-07-26T22:33:03.1944266Z               "line": 158
2026-07-26T22:33:03.1944351Z             },
2026-07-26T22:33:03.1944431Z             {
2026-07-26T22:33:03.1944554Z               "path": "crates/spt-store/src/psyche_custody.rs",
2026-07-26T22:33:03.1944650Z               "line": 179
2026-07-26T22:33:03.1944741Z             },
2026-07-26T22:33:03.1944835Z             {
2026-07-26T22:33:03.1944960Z               "path": "crates/spt-store/src/psyche_custody.rs",
2026-07-26T22:33:03.1945051Z               "line": 200
2026-07-26T22:33:03.1945131Z             }
2026-07-26T22:33:03.1945222Z           ]
2026-07-26T22:33:03.1945304Z         }
2026-07-26T22:33:03.1945384Z       }
2026-07-26T22:33:03.1945465Z     },
2026-07-26T22:33:03.1945551Z     {
2026-07-26T22:33:03.1945651Z       "id": "REQ-PSYCHE-SPAWN-ENV-PARITY",
2026-07-26T22:33:03.1949142Z       "title": "P-2 (WORKER-TRUTH triage addendum, perri-filed field finding 2026-07-06): the per-event psyche_resume spawn threads the perch record's CAPTURED read_env stamps into the spawn ENVIRONMENT — the F-027 Half-B env-parity contract (BINDING, design-frozen: read_env captured at creation + stamped on the record + threaded IDENTICALLY to every session spawn; the spawn never reads its own process env for a stamped var) extended to the psyche role the design predates. Field driver: flynn (claude-spt:ccs) — the ccs wrapper relocates the account root via CLAUDE_CONFIG_DIR at PARENT launch and the perch record correctly captured it, but the daemon spawns psyche_resume with bare env → default ~/.claude root → headless 'Not logged in' exit-1 → strike loop; psyche + parent land in DIFFERENT account roots (auth AND root-scoped continuity both break). Core stays harness-agnostic (threads whatever [env] direction=read captured — knows nothing of CLAUDE_CONFIG_DIR). Scope note: this is the URGENT psyche leg of F-027 Half B; the full pre_spawn seam + endpoint-session env threading stays design-parked (F-027-ENDPOINT-SPAWN-FAIL-DESIGN.md) unless operator pulls it forward.",
2026-07-26T22:33:03.1949468Z       "requiredStages": [
2026-07-26T22:33:03.1949557Z         "impl",
2026-07-26T22:33:03.1949638Z         "unit",
2026-07-26T22:33:03.1949724Z         "int"
2026-07-26T22:33:03.1949805Z       ],
2026-07-26T22:33:03.1949886Z       "stages": {
2026-07-26T22:33:03.1949971Z         "doc": {
2026-07-26T22:33:03.1950067Z           "complete": false,
2026-07-26T22:33:03.1950153Z           "evidence": []
2026-07-26T22:33:03.1950229Z         },
2026-07-26T22:33:03.1950315Z         "impl": {
2026-07-26T22:33:03.1950411Z           "complete": true,
2026-07-26T22:33:03.1950491Z           "evidence": [
2026-07-26T22:33:03.1950567Z             {
2026-07-26T22:33:03.1950688Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.1950782Z               "line": 716
2026-07-26T22:33:03.1950868Z             },
2026-07-26T22:33:03.1950944Z             {
2026-07-26T22:33:03.1951060Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.1951149Z               "line": 799
2026-07-26T22:33:03.1951230Z             }
2026-07-26T22:33:03.1951322Z           ]
2026-07-26T22:33:03.1951389Z         },
2026-07-26T22:33:03.1951478Z         "int": {
2026-07-26T22:33:03.1951564Z           "complete": true,
2026-07-26T22:33:03.1951660Z           "evidence": [
2026-07-26T22:33:03.1951737Z             {
2026-07-26T22:33:03.1951864Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1951947Z               "line": 1497
2026-07-26T22:33:03.1952028Z             }
2026-07-26T22:33:03.1952112Z           ]
2026-07-26T22:33:03.1952188Z         },
2026-07-26T22:33:03.1952269Z         "unit": {
2026-07-26T22:33:03.1952364Z           "complete": true,
2026-07-26T22:33:03.1952443Z           "evidence": [
2026-07-26T22:33:03.1952519Z             {
2026-07-26T22:33:03.1952643Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.1952735Z               "line": 1251
2026-07-26T22:33:03.1952805Z             },
2026-07-26T22:33:03.1952900Z             {
2026-07-26T22:33:03.1953016Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.1953096Z               "line": 1279
2026-07-26T22:33:03.1953177Z             }
2026-07-26T22:33:03.1953259Z           ]
2026-07-26T22:33:03.1953344Z         }
2026-07-26T22:33:03.1953425Z       }
2026-07-26T22:33:03.1953501Z     },
2026-07-26T22:33:03.1953593Z     {
2026-07-26T22:33:03.1953711Z       "id": "REQ-PSYCHE-STAMP-CLEAR-ANY-SUCCESS",
2026-07-26T22:33:03.1955024Z       "title": "W1 (LIFECYCLE-TRUTH): EVERY successful psyche operation clears psyche_host_error — not just the pulse-loop leg. ROOT (three field confirmations, perri): the stamp clears only via note_turn_outcome's Ok leg (lifecycle.rs:1101); a SUCCESSFUL psyche op via checkpoint/wake bypasses it -> stale FAILED stamp sits over a healthy psyche. FIX: event turn, checkpoint/wake synthesis, and signoff echo all clear the stamp on success.",
2026-07-26T22:33:03.1955119Z       "requiredStages": [
2026-07-26T22:33:03.1955287Z         "impl",
2026-07-26T22:33:03.1955367Z         "unit"
2026-07-26T22:33:03.1955443Z       ],
2026-07-26T22:33:03.1955539Z       "stages": {
2026-07-26T22:33:03.1955625Z         "doc": {
2026-07-26T22:33:03.1955720Z           "complete": false,
2026-07-26T22:33:03.1955801Z           "evidence": []
2026-07-26T22:33:03.1955882Z         },
2026-07-26T22:33:03.1955959Z         "impl": {
2026-07-26T22:33:03.1956058Z           "complete": true,
2026-07-26T22:33:03.1956131Z           "evidence": [
2026-07-26T22:33:03.1956216Z             {
2026-07-26T22:33:03.1956335Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1956426Z               "line": 890
2026-07-26T22:33:03.1956503Z             },
2026-07-26T22:33:03.1956583Z             {
2026-07-26T22:33:03.1956693Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1956851Z               "line": 900
2026-07-26T22:33:03.1956931Z             },
2026-07-26T22:33:03.1957031Z             {
2026-07-26T22:33:03.1957152Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1957246Z               "line": 1198
2026-07-26T22:33:03.1957327Z             }
2026-07-26T22:33:03.1957404Z           ]
2026-07-26T22:33:03.1957481Z         },
2026-07-26T22:33:03.1957574Z         "int": {
2026-07-26T22:33:03.1957664Z           "complete": false,
2026-07-26T22:33:03.1957765Z           "evidence": []
2026-07-26T22:33:03.1957847Z         },
2026-07-26T22:33:03.1957941Z         "unit": {
2026-07-26T22:33:03.1958027Z           "complete": true,
2026-07-26T22:33:03.1961380Z           "evidence": [
2026-07-26T22:33:03.1961489Z             {
2026-07-26T22:33:03.1961644Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.1961734Z               "line": 2208
2026-07-26T22:33:03.1961824Z             }
2026-07-26T22:33:03.1961911Z           ]
2026-07-26T22:33:03.1961996Z         }
2026-07-26T22:33:03.1962072Z       }
2026-07-26T22:33:03.1962158Z     },
2026-07-26T22:33:03.1962250Z     {
2026-07-26T22:33:03.1962371Z       "id": "REQ-PSYCHE-TURN-STREAM-EVIDENCE",
2026-07-26T22:33:03.1965434Z       "title": "A failed psyche turn preserves BOTH captured streams as evidence: TurnError::Failed carries the child's stdout alongside stderr, and the failure display appends a bounded single-line stdout TAIL (last ~500 bytes, UTF-8-boundary-safe cut, newlines collapsed, the literal <EMPTY> when the stream said nothing — absence stated, never implied by a missing field). WHY (2026-07-26 spend-limit RCA): a failed turn's stdout is not psyche output, so BOTH core (turn.rs kept {status_code, stderr} only) and the adapter (guarding its outbound channel) independently discarded it — the same blind spot implemented twice — and an account-level outage surfaced as a bare 'claude exited exit code: 1' with the decisive refusal text thrown away at two layers; three agents then chain-hypothesized on an error string the real failing path never emitted. The tail is cause-agnostic instrumentation: it does not care what the failure is, which is why it survives being wrong about it. Adapter twin: claude-spt v0.25.14 dual-stream tail (shipped 2026-07-26).",
2026-07-26T22:33:03.1965542Z       "requiredStages": [
2026-07-26T22:33:03.1965622Z         "impl",
2026-07-26T22:33:03.1965718Z         "unit"
2026-07-26T22:33:03.1965794Z       ],
2026-07-26T22:33:03.1965875Z       "stages": {
2026-07-26T22:33:03.1965951Z         "doc": {
2026-07-26T22:33:03.1966046Z           "complete": false,
2026-07-26T22:33:03.1966138Z           "evidence": []
2026-07-26T22:33:03.1966218Z         },
2026-07-26T22:33:03.1966308Z         "impl": {
2026-07-26T22:33:03.1966391Z           "complete": true,
2026-07-26T22:33:03.1966476Z           "evidence": [
2026-07-26T22:33:03.1966557Z             {
2026-07-26T22:33:03.1966672Z               "path": "crates/spt-live/src/turn.rs",
2026-07-26T22:33:03.1966767Z               "line": 91
2026-07-26T22:33:03.1966838Z             },
2026-07-26T22:33:03.1966919Z             {
2026-07-26T22:33:03.1967167Z               "path": "crates/spt-live/src/turn.rs",
2026-07-26T22:33:03.1967262Z               "line": 127
2026-07-26T22:33:03.1967345Z             }
2026-07-26T22:33:03.1967425Z           ]
2026-07-26T22:33:03.1967510Z         },
2026-07-26T22:33:03.1967586Z         "int": {
2026-07-26T22:33:03.1967684Z           "complete": false,
2026-07-26T22:33:03.1967768Z           "evidence": []
2026-07-26T22:33:03.1967859Z         },
2026-07-26T22:33:03.1967941Z         "unit": {
2026-07-26T22:33:03.1968041Z           "complete": true,
2026-07-26T22:33:03.1968129Z           "evidence": [
2026-07-26T22:33:03.1968214Z             {
2026-07-26T22:33:03.1968325Z               "path": "crates/spt-live/src/turn.rs",
2026-07-26T22:33:03.1968412Z               "line": 189
2026-07-26T22:33:03.1968496Z             },
2026-07-26T22:33:03.1968674Z             {
2026-07-26T22:33:03.1968773Z               "path": "crates/spt-live/src/turn.rs",
2026-07-26T22:33:03.1968868Z               "line": 215
2026-07-26T22:33:03.1969021Z             }
2026-07-26T22:33:03.1969107Z           ]
2026-07-26T22:33:03.1969182Z         }
2026-07-26T22:33:03.1969260Z       }
2026-07-26T22:33:03.1969341Z     },
2026-07-26T22:33:03.1969431Z     {
2026-07-26T22:33:03.1969536Z       "id": "REQ-PUBLIC-ERROR-SURFACES",
2026-07-26T22:33:03.1974249Z       "title": "F-1 (REMOTE-TRUTH triage §F-1, Q4 UX rule, operator-ruled): CLI stderr a non-developer can hit names the OBSERVABLE SITUATION + the NEXT ACTION — never journal/op/brain/store lingo. The sweep's named offenders: (1) `RC_FAIL:{id}: … brain IPC read deadline elapsed` — the brain transport error surfaced RAW through rc's residual Err arm (rc.rs run_attach_inner); operators read 'brain IPC' where the situation is 'the daemon didn't answer in time'. (2) `WOKE_FAIL:{id}: info.json absent or unreadable — not a hosted perch` (resting.rs apply_event miss) — store-file lingo in the one rest-verb line a stale remote row still surfaces cross-node (the qualified-arm D6 case; the A-3 bare-id local path already routes instead). The miss stays SINGLE-SOURCED from NOT_A_HOSTED_PERCH_MARKER (in-process discriminant, resting.rs — reword is compat-safe per its own doc; the drift-pin unit keeps builder+matcher fused). (3) translation_fault never human-rendered (F-030 post-release seed): a broker-stamped input-translation fault (e.g. 'inject worker panicked') was invisible in `endpoint list`/`whoami` while keystrokes silently degraded — rendered now as a SELF-pin annotation exactly like the psyche_host_error pattern (REQ-HAZARD-LIVEHOST-BOOT-RACE), human line + additive skip-if-none JSON field. Kin to banked patterns: public --help no internal codes; 'Updated' not 'trial'. The A-4b retry terminal + B-3 give-up line + A-3 routing strings shipped F-1-clean already — this REQ sweeps the stragglers and is the home for future sightings (extend, don't multiply).",
2026-07-26T22:33:03.1974394Z       "requiredStages": [
2026-07-26T22:33:03.1974474Z         "impl",
2026-07-26T22:33:03.1974564Z         "unit"
2026-07-26T22:33:03.1974655Z       ],
2026-07-26T22:33:03.1974747Z       "stages": {
2026-07-26T22:33:03.1974831Z         "doc": {
2026-07-26T22:33:03.1974931Z           "complete": false,
2026-07-26T22:33:03.1975023Z           "evidence": []
2026-07-26T22:33:03.1975118Z         },
2026-07-26T22:33:03.1975199Z         "impl": {
2026-07-26T22:33:03.1975289Z           "complete": true,
2026-07-26T22:33:03.1975367Z           "evidence": [
2026-07-26T22:33:03.1975451Z             {
2026-07-26T22:33:03.1975580Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.1975662Z               "line": 298
2026-07-26T22:33:03.1975748Z             },
2026-07-26T22:33:03.1975832Z             {
2026-07-26T22:33:03.1975941Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1976023Z               "line": 3085
2026-07-26T22:33:03.1976107Z             },
2026-07-26T22:33:03.1976192Z             {
2026-07-26T22:33:03.1976301Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1976511Z               "line": 7462
2026-07-26T22:33:03.1976592Z             },
2026-07-26T22:33:03.1976665Z             {
2026-07-26T22:33:03.1976764Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.1976845Z               "line": 1651
2026-07-26T22:33:03.1976922Z             }
2026-07-26T22:33:03.1977003Z           ]
2026-07-26T22:33:03.1977084Z         },
2026-07-26T22:33:03.1977169Z         "int": {
2026-07-26T22:33:03.1977261Z           "complete": false,
2026-07-26T22:33:03.1977355Z           "evidence": []
2026-07-26T22:33:03.1977436Z         },
2026-07-26T22:33:03.1977517Z         "unit": {
2026-07-26T22:33:03.1977619Z           "complete": true,
2026-07-26T22:33:03.1977698Z           "evidence": [
2026-07-26T22:33:03.1977779Z             {
2026-07-26T22:33:03.1977881Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.1978094Z               "line": 15382
2026-07-26T22:33:03.1978176Z             },
2026-07-26T22:33:03.1978263Z             {
2026-07-26T22:33:03.1978370Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.1978462Z               "line": 3576
2026-07-26T22:33:03.1978544Z             }
2026-07-26T22:33:03.1978629Z           ]
2026-07-26T22:33:03.1978709Z         }
2026-07-26T22:33:03.1978803Z       }
2026-07-26T22:33:03.1978885Z     },
2026-07-26T22:33:03.1979038Z     {
2026-07-26T22:33:03.1979137Z       "id": "REQ-PUMP-DIAL-FASTFAIL",
2026-07-26T22:33:03.1986336Z       "title": "PUMP-TRUTH W1 (RE-SCOPED post round-2 empirical lock — the DIAL is EXONERATED, healthy ~100ms): a pump worker-leg PEER-REPLY read to a connect-then-silent / half-alive peer must drop THAT peer as an ORDINARY per-peer failure (peer_outcome's non-TimedOut arm -> PUMP_PEER_FAIL -> drop conn + redial, round CONTINUES, heartbeat advances), NEVER burn the brain's 30s PUMP_PEER_IO_TIMEOUT carrier deadline into a whole-round TimedOut POISON -> supervise_pump doubling-backoff restart. ROOT (deployah leg-instrumented capture, enlyzeam, 3 identical rounds): DIAL_EXIT 96ms ok, LEG i=3 update ms=30025 err[TimedOut] = the wedge. request_update (propagate.rs:373-375) opens the update stream + sends UpdRecord::Query (all bounded, all land), then BLOCKS read_event_until(deadline=call_deadline()=30s) on the peer's Offer/UpToDate reply; a peer that accepts the stream but never answers burns the full 30s -> TimedOut -> peer_outcome (pump/mod.rs:601) POISON -> whole-round abort + restart (= the field PEER_PUMP_FAIL: brain IPC read deadline, always-zero PUMP_PEER_FAIL). request_sync (sync.rs:374-376) is the LATENT TWIN (SKIPS the reply-read only when the want-set is empty; bites the moment it is non-empty against a silent peer). FIX (both legs): (a) reclassify the reply-read no-progress timeout OUT of TimedOut to a non-poison kind (Brain::read_peer_reply_until) so peer_outcome drops ONLY that peer -- poison RESERVED strictly for a genuine broker-IPC-CARRIER desync (the carrier ops net_open_stream/subscribe/send keep raw TimedOut); the abandoned peer stream is safe (exactly-once seq cursor stays contiguous, a late reply matches no live stream id). (b) budget-decouple the reply-read below 30s (Brain::reply_read_deadline = now + min(io_timeout, 10s)) so a silent peer drops promptly even in the still-sequential pre-W2 pump and can never race the carrier deadline. Files: propagate.rs (request_update) + sync.rs (request_sync) + brain.rs (reply_read_deadline + read_peer_reply_until) + pump/mod.rs (peer_outcome poison reserved for carrier-desync). Gate: a connect-then-silent peer at fan#0 -> the update leg drops it ordinarily within the reply-read budget, round continues + heartbeat advances, NO PEER_PUMP_RESTART; happy path (live peer) unchanged; + the sync-non-empty-want-set latent case. Kin REQ-PUMP-PEER-ISOLATION (W2 concurrency, VALIDATED by this root) + REQ-HAZARD-PUMP-IPC-DEADLINE (the poison it must stop mis-firing on a peer).",
2026-07-26T22:33:03.1986482Z       "requiredStages": [
2026-07-26T22:33:03.1986573Z         "impl",
2026-07-26T22:33:03.1986653Z         "unit",
2026-07-26T22:33:03.1986852Z         "int"
2026-07-26T22:33:03.1986934Z       ],
2026-07-26T22:33:03.1987028Z       "stages": {
2026-07-26T22:33:03.1987105Z         "doc": {
2026-07-26T22:33:03.1987196Z           "complete": false,
2026-07-26T22:33:03.1987286Z           "evidence": []
2026-07-26T22:33:03.1987371Z         },
2026-07-26T22:33:03.1987457Z         "impl": {
2026-07-26T22:33:03.1987554Z           "complete": true,
2026-07-26T22:33:03.1987644Z           "evidence": [
2026-07-26T22:33:03.1987724Z             {
2026-07-26T22:33:03.1987845Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.1987944Z               "line": 751
2026-07-26T22:33:03.1988024Z             },
2026-07-26T22:33:03.1988106Z             {
2026-07-26T22:33:03.1988221Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.1988316Z               "line": 1049
2026-07-26T22:33:03.1988489Z             },
2026-07-26T22:33:03.1988578Z             {
2026-07-26T22:33:03.1988688Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.1988789Z               "line": 2032
2026-07-26T22:33:03.1988860Z             },
2026-07-26T22:33:03.1988935Z             {
2026-07-26T22:33:03.1989128Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.1989226Z               "line": 2043
2026-07-26T22:33:03.1989307Z             },
2026-07-26T22:33:03.1989397Z             {
2026-07-26T22:33:03.1989513Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.1989607Z               "line": 406
2026-07-26T22:33:03.1989688Z             },
2026-07-26T22:33:03.1989775Z             {
2026-07-26T22:33:03.1989893Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:03.1989979Z               "line": 407
2026-07-26T22:33:03.1990061Z             }
2026-07-26T22:33:03.1990141Z           ]
2026-07-26T22:33:03.1990227Z         },
2026-07-26T22:33:03.1990308Z         "int": {
2026-07-26T22:33:03.1990405Z           "complete": true,
2026-07-26T22:33:03.1990490Z           "evidence": [
2026-07-26T22:33:03.1990584Z             {
2026-07-26T22:33:03.1990719Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-07-26T22:33:03.1990818Z               "line": 90
2026-07-26T22:33:03.1990904Z             }
2026-07-26T22:33:03.1990986Z           ]
2026-07-26T22:33:03.1991063Z         },
2026-07-26T22:33:03.1991142Z         "unit": {
2026-07-26T22:33:03.1991238Z           "complete": true,
2026-07-26T22:33:03.1991334Z           "evidence": [
2026-07-26T22:33:03.1991419Z             {
2026-07-26T22:33:03.1991542Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.1991623Z               "line": 2071
2026-07-26T22:33:03.1991709Z             },
2026-07-26T22:33:03.1991784Z             {
2026-07-26T22:33:03.1991897Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.1991993Z               "line": 2089
2026-07-26T22:33:03.1992075Z             }
2026-07-26T22:33:03.1992160Z           ]
2026-07-26T22:33:03.1992240Z         }
2026-07-26T22:33:03.1992327Z       }
2026-07-26T22:33:03.1992413Z     },
2026-07-26T22:33:03.1992493Z     {
2026-07-26T22:33:03.1992598Z       "id": "REQ-PUMP-PEER-ISOLATION",
2026-07-26T22:33:03.1995914Z       "title": "PUMP-TRUTH W2 (architectural, operator ruling 2026-07-08): one peer must NOT block or poison all others -- peer discovery is async / per-peer-independent. Two coupled defects in run_peer_pump: (1) SEQUENTIAL fan-out (for peer in fan_targets dials one-at-a-time, each up to the bound -> peer N+1 waits behind peer N); (2) WHOLE-ROUND POISON (peer_outcome(...)? -- one TimedOut aborts the ENTIRE round via ? -> supervise_pump doubling-backoff restart, resetting ALL conns). FIX: per-peer concurrency + fault isolation -- the pump issues non-blocking dial requests; the broker (already async tokio+iroh) returns connection/presence results as async events (the D4c presence seam), no serial per-peer block; a peer TimedOut drops + reschedules ONLY that peer, NEVER aborts the round or restarts the pump. Supervised-restart is RESERVED for a dead BROKER conn, not a dead peer (the single-thread+bounded-read A-half REQ-HAZARD-PUMP-IPC-DEADLINE was defensive -- it stopped the infinite wedge but coupled every peer's fate; this decouples). Gate: a mixed roster (1 live + N offline peers) -- the live peer connects AND this node advertises presence in the SAME round the offline peers fail; heartbeat advances every round; no PEER_PUMP_RESTART from a dead peer. Depends on W1 (a fast-failing dial is the precondition for clean per-peer scheduling).",
2026-07-26T22:33:03.1996119Z       "requiredStages": [
2026-07-26T22:33:03.1996210Z         "impl",
2026-07-26T22:33:03.1996280Z         "unit",
2026-07-26T22:33:03.1996366Z         "int"
2026-07-26T22:33:03.1996444Z       ],
2026-07-26T22:33:03.1996535Z       "stages": {
2026-07-26T22:33:03.1996614Z         "doc": {
2026-07-26T22:33:03.1996797Z           "complete": false,
2026-07-26T22:33:03.1996892Z           "evidence": []
2026-07-26T22:33:03.1996981Z         },
2026-07-26T22:33:03.1997076Z         "impl": {
2026-07-26T22:33:03.1997171Z           "complete": true,
2026-07-26T22:33:03.1997264Z           "evidence": [
2026-07-26T22:33:03.1997345Z             {
2026-07-26T22:33:03.1997465Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.1997547Z               "line": 936
2026-07-26T22:33:03.1997636Z             },
2026-07-26T22:33:03.1997722Z             {
2026-07-26T22:33:03.1997837Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.1997927Z               "line": 1486
2026-07-26T22:33:03.1998012Z             },
2026-07-26T22:33:03.1998085Z             {
2026-07-26T22:33:03.1998204Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.1998289Z               "line": 1863
2026-07-26T22:33:03.1998376Z             },
2026-07-26T22:33:03.1998457Z             {
2026-07-26T22:33:03.1998584Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.1998666Z               "line": 4206
2026-07-26T22:33:03.1998763Z             },
2026-07-26T22:33:03.1998838Z             {
2026-07-26T22:33:03.1999039Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.1999138Z               "line": 5455
2026-07-26T22:33:03.1999228Z             },
2026-07-26T22:33:03.1999311Z             {
2026-07-26T22:33:03.1999425Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.1999505Z               "line": 217
2026-07-26T22:33:03.1999582Z             },
2026-07-26T22:33:03.1999702Z             {
2026-07-26T22:33:03.1999814Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.1999895Z               "line": 222
2026-07-26T22:33:03.1999986Z             },
2026-07-26T22:33:03.2000073Z             {
2026-07-26T22:33:03.2000200Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.2000282Z               "line": 236
2026-07-26T22:33:03.2000373Z             },
2026-07-26T22:33:03.2000458Z             {
2026-07-26T22:33:03.2000567Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.2000660Z               "line": 1192
2026-07-26T22:33:03.2000735Z             },
2026-07-26T22:33:03.2000810Z             {
2026-07-26T22:33:03.2000935Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2001016Z               "line": 81
2026-07-26T22:33:03.2001107Z             },
2026-07-26T22:33:03.2001192Z             {
2026-07-26T22:33:03.2001299Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2001426Z               "line": 691
2026-07-26T22:33:03.2001521Z             },
2026-07-26T22:33:03.2001594Z             {
2026-07-26T22:33:03.2001712Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2001812Z               "line": 1185
2026-07-26T22:33:03.2001885Z             },
2026-07-26T22:33:03.2001975Z             {
2026-07-26T22:33:03.2002093Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2002193Z               "line": 1536
2026-07-26T22:33:03.2002381Z             },
2026-07-26T22:33:03.2002466Z             {
2026-07-26T22:33:03.2002586Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.2002681Z               "line": 161
2026-07-26T22:33:03.2002758Z             },
2026-07-26T22:33:03.2002843Z             {
2026-07-26T22:33:03.2002959Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.2003053Z               "line": 176
2026-07-26T22:33:03.2003139Z             },
2026-07-26T22:33:03.2003221Z             {
2026-07-26T22:33:03.2003330Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.2003415Z               "line": 204
2026-07-26T22:33:03.2003498Z             },
2026-07-26T22:33:03.2003578Z             {
2026-07-26T22:33:03.2003692Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.2003869Z               "line": 800
2026-07-26T22:33:03.2003940Z             },
2026-07-26T22:33:03.2004021Z             {
2026-07-26T22:33:03.2004137Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.2004236Z               "line": 827
2026-07-26T22:33:03.2004317Z             },
2026-07-26T22:33:03.2004393Z             {
2026-07-26T22:33:03.2004513Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.2004612Z               "line": 867
2026-07-26T22:33:03.2004694Z             },
2026-07-26T22:33:03.2004771Z             {
2026-07-26T22:33:03.2004894Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.2004993Z               "line": 912
2026-07-26T22:33:03.2005079Z             }
2026-07-26T22:33:03.2005160Z           ]
2026-07-26T22:33:03.2005239Z         },
2026-07-26T22:33:03.2005324Z         "int": {
2026-07-26T22:33:03.2005415Z           "complete": true,
2026-07-26T22:33:03.2005502Z           "evidence": [
2026-07-26T22:33:03.2005601Z             {
2026-07-26T22:33:03.2005715Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-07-26T22:33:03.2005812Z               "line": 669
2026-07-26T22:33:03.2005892Z             },
2026-07-26T22:33:03.2005972Z             {
2026-07-26T22:33:03.2006093Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-07-26T22:33:03.2006183Z               "line": 844
2026-07-26T22:33:03.2006264Z             },
2026-07-26T22:33:03.2006345Z             {
2026-07-26T22:33:03.2006460Z               "path": "docs/PUMP-W2-DESIGN.md",
2026-07-26T22:33:03.2006546Z               "line": 54
2026-07-26T22:33:03.2006621Z             }
2026-07-26T22:33:03.2006704Z           ]
2026-07-26T22:33:03.2006789Z         },
2026-07-26T22:33:03.2006884Z         "unit": {
2026-07-26T22:33:03.2006975Z           "complete": true,
2026-07-26T22:33:03.2007071Z           "evidence": [
2026-07-26T22:33:03.2007141Z             {
2026-07-26T22:33:03.2007265Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.2007357Z               "line": 1555
2026-07-26T22:33:03.2007438Z             },
2026-07-26T22:33:03.2007521Z             {
2026-07-26T22:33:03.2007650Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.2007736Z               "line": 1607
2026-07-26T22:33:03.2007815Z             },
2026-07-26T22:33:03.2007896Z             {
2026-07-26T22:33:03.2008020Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.2008112Z               "line": 1652
2026-07-26T22:33:03.2008201Z             },
2026-07-26T22:33:03.2008282Z             {
2026-07-26T22:33:03.2008401Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.2008492Z               "line": 1686
2026-07-26T22:33:03.2008577Z             },
2026-07-26T22:33:03.2008660Z             {
2026-07-26T22:33:03.2008774Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.2008859Z               "line": 1753
2026-07-26T22:33:03.2009027Z             },
2026-07-26T22:33:03.2009117Z             {
2026-07-26T22:33:03.2009231Z               "path": "docs/PUMP-W2-DESIGN.md",
2026-07-26T22:33:03.2009323Z               "line": 55
2026-07-26T22:33:03.2009604Z             }
2026-07-26T22:33:03.2009680Z           ]
2026-07-26T22:33:03.2009766Z         }
2026-07-26T22:33:03.2009842Z       }
2026-07-26T22:33:03.2009929Z     },
2026-07-26T22:33:03.2010009Z     {
2026-07-26T22:33:03.2010113Z       "id": "REQ-PUMP-STAGE-TRUTH",
2026-07-26T22:33:03.2013704Z       "title": "MESH-RECOVERY W1 (ADR-0039, RCA wave 3 — the acceptance surface, same contract): peer-failure telemetry is STAGE-SPLIT and health is USER-MEANINGFUL. The single 10s PUMP_PEER_FAIL token splits into attributed stages — address-resolution, QUIC connect, ALPN, seed-proof send, seed-proof receive/verify, roster exchange — each failure stamped (wall+mono) and peer-attributed (subsumes the 2026-07-14 PUMP_PEER_FAIL-unstamped seed). daemon status / subnet status report: live peer count, last successful peer dial, last admitted registry update, duration of any all-peer failure; the incident fingerprint (all dials failing + heartbeat fresh + net_up true) MUST render degraded — no green without real peer progress. New fields ADDITIVE (N-1 readers unaffected). Gate: impl — stage split + status surfaces; unit — stage classification + health state machine (degraded on all-peer failure, healthy only on real progress, not on heartbeat/time); int — health flips degraded/healthy across a real peer outage/restore; doc — reference regen (CLI surface change → xtask gen, no internal codes in clap help). Kin REQ-PEER-ROUTE-CHAIN, REQ-DAEMON-5 (heartbeat — answers liveness, not reachability), REQ-CLI-2/REQ-SUBNET-8 (render legs).",
2026-07-26T22:33:03.2013937Z       "requiredStages": [
2026-07-26T22:33:03.2014019Z         "doc",
2026-07-26T22:33:03.2014110Z         "impl",
2026-07-26T22:33:03.2014181Z         "unit",
2026-07-26T22:33:03.2014271Z         "int"
2026-07-26T22:33:03.2014343Z       ],
2026-07-26T22:33:03.2014430Z       "stages": {
2026-07-26T22:33:03.2014505Z         "doc": {
2026-07-26T22:33:03.2014605Z           "complete": true,
2026-07-26T22:33:03.2014687Z           "evidence": [
2026-07-26T22:33:03.2014782Z             {
2026-07-26T22:33:03.2014939Z               "path": "docs/adr/0039-peer-route-resolution-truth.md",
2026-07-26T22:33:03.2015021Z               "line": 47
2026-07-26T22:33:03.2015097Z             }
2026-07-26T22:33:03.2015182Z           ]
2026-07-26T22:33:03.2015273Z         },
2026-07-26T22:33:03.2015356Z         "impl": {
2026-07-26T22:33:03.2015449Z           "complete": true,
2026-07-26T22:33:03.2015548Z           "evidence": [
2026-07-26T22:33:03.2015625Z             {
2026-07-26T22:33:03.2015748Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-07-26T22:33:03.2015837Z               "line": 106
2026-07-26T22:33:03.2015917Z             },
2026-07-26T22:33:03.2016000Z             {
2026-07-26T22:33:03.2016123Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2016218Z               "line": 926
2026-07-26T22:33:03.2016290Z             },
2026-07-26T22:33:03.2016372Z             {
2026-07-26T22:33:03.2016485Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2016581Z               "line": 1553
2026-07-26T22:33:03.2016662Z             },
2026-07-26T22:33:03.2016743Z             {
2026-07-26T22:33:03.2016881Z               "path": "crates/spt-daemon/src/pump/health.rs",
2026-07-26T22:33:03.2016963Z               "line": 13
2026-07-26T22:33:03.2017048Z             },
2026-07-26T22:33:03.2017129Z             {
2026-07-26T22:33:03.2017259Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.2017330Z               "line": 944
2026-07-26T22:33:03.2017415Z             },
2026-07-26T22:33:03.2017496Z             {
2026-07-26T22:33:03.2017626Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.2017715Z               "line": 440
2026-07-26T22:33:03.2017797Z             },
2026-07-26T22:33:03.2017879Z             {
2026-07-26T22:33:03.2017998Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.2018096Z               "line": 448
2026-07-26T22:33:03.2018258Z             },
2026-07-26T22:33:03.2018352Z             {
2026-07-26T22:33:03.2018475Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-07-26T22:33:03.2018570Z               "line": 228
2026-07-26T22:33:03.2018658Z             },
2026-07-26T22:33:03.2018742Z             {
2026-07-26T22:33:03.2018847Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2019029Z               "line": 4609
2026-07-26T22:33:03.2019104Z             },
2026-07-26T22:33:03.2019191Z             {
2026-07-26T22:33:03.2019291Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2019390Z               "line": 4652
2026-07-26T22:33:03.2019477Z             },
2026-07-26T22:33:03.2019568Z             {
2026-07-26T22:33:03.2019668Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2019869Z               "line": 4883
2026-07-26T22:33:03.2019944Z             },
2026-07-26T22:33:03.2020029Z             {
2026-07-26T22:33:03.2020121Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2020221Z               "line": 8806
2026-07-26T22:33:03.2020301Z             },
2026-07-26T22:33:03.2020382Z             {
2026-07-26T22:33:03.2020484Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2020569Z               "line": 8948
2026-07-26T22:33:03.2020650Z             }
2026-07-26T22:33:03.2020736Z           ]
2026-07-26T22:33:03.2020818Z         },
2026-07-26T22:33:03.2020898Z         "int": {
2026-07-26T22:33:03.2020997Z           "complete": true,
2026-07-26T22:33:03.2021087Z           "evidence": [
2026-07-26T22:33:03.2021169Z             {
2026-07-26T22:33:03.2021306Z               "path": "crates/spt-daemon/tests/mesh_recovery.rs",
2026-07-26T22:33:03.2021397Z               "line": 340
2026-07-26T22:33:03.2021484Z             }
2026-07-26T22:33:03.2021556Z           ]
2026-07-26T22:33:03.2021654Z         },
2026-07-26T22:33:03.2021736Z         "unit": {
2026-07-26T22:33:03.2021836Z           "complete": true,
2026-07-26T22:33:03.2021935Z           "evidence": [
2026-07-26T22:33:03.2022012Z             {
2026-07-26T22:33:03.2022137Z               "path": "crates/spt-daemon/src/pump/health.rs",
2026-07-26T22:33:03.2022227Z               "line": 211
2026-07-26T22:33:03.2022308Z             },
2026-07-26T22:33:03.2022385Z             {
2026-07-26T22:33:03.2022513Z               "path": "crates/spt-daemon/src/pump/health.rs",
2026-07-26T22:33:03.2022594Z               "line": 225
2026-07-26T22:33:03.2022681Z             },
2026-07-26T22:33:03.2022762Z             {
2026-07-26T22:33:03.2022885Z               "path": "crates/spt-daemon/src/pump/health.rs",
2026-07-26T22:33:03.2022971Z               "line": 271
2026-07-26T22:33:03.2023068Z             },
2026-07-26T22:33:03.2023142Z             {
2026-07-26T22:33:03.2023265Z               "path": "crates/spt-daemon/src/pump/health.rs",
2026-07-26T22:33:03.2023361Z               "line": 309
2026-07-26T22:33:03.2023450Z             },
2026-07-26T22:33:03.2023530Z             {
2026-07-26T22:33:03.2023649Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2023731Z               "line": 19058
2026-07-26T22:33:03.2023825Z             }
2026-07-26T22:33:03.2023911Z           ]
2026-07-26T22:33:03.2023997Z         }
2026-07-26T22:33:03.2024079Z       }
2026-07-26T22:33:03.2024178Z     },
2026-07-26T22:33:03.2024264Z     {
2026-07-26T22:33:03.2024365Z       "id": "REQ-RC-1",
2026-07-26T22:33:03.2026378Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-07-26T22:33:03.2026598Z       "requiredStages": [
2026-07-26T22:33:03.2026693Z         "impl",
2026-07-26T22:33:03.2026769Z         "unit",
2026-07-26T22:33:03.2026860Z         "int"
2026-07-26T22:33:03.2026941Z       ],
2026-07-26T22:33:03.2027036Z       "stages": {
2026-07-26T22:33:03.2027121Z         "doc": {
2026-07-26T22:33:03.2027218Z           "complete": false,
2026-07-26T22:33:03.2027304Z           "evidence": []
2026-07-26T22:33:03.2027389Z         },
2026-07-26T22:33:03.2027461Z         "impl": {
2026-07-26T22:33:03.2027556Z           "complete": true,
2026-07-26T22:33:03.2027646Z           "evidence": [
2026-07-26T22:33:03.2027737Z             {
2026-07-26T22:33:03.2027857Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.2028028Z               "line": 1515
2026-07-26T22:33:03.2028114Z             },
2026-07-26T22:33:03.2028205Z             {
2026-07-26T22:33:03.2028328Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2028420Z               "line": 5486
2026-07-26T22:33:03.2028501Z             },
2026-07-26T22:33:03.2028590Z             {
2026-07-26T22:33:03.2028703Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2028800Z               "line": 1670
2026-07-26T22:33:03.2028875Z             },
2026-07-26T22:33:03.2029049Z             {
2026-07-26T22:33:03.2029165Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2029279Z               "line": 1704
2026-07-26T22:33:03.2029359Z             },
2026-07-26T22:33:03.2029451Z             {
2026-07-26T22:33:03.2029556Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2029654Z               "line": 22
2026-07-26T22:33:03.2029722Z             },
2026-07-26T22:33:03.2029823Z             {
2026-07-26T22:33:03.2029918Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2030018Z               "line": 1388
2026-07-26T22:33:03.2030094Z             },
2026-07-26T22:33:03.2030175Z             {
2026-07-26T22:33:03.2030280Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2030366Z               "line": 1716
2026-07-26T22:33:03.2030447Z             }
2026-07-26T22:33:03.2030528Z           ]
2026-07-26T22:33:03.2030618Z         },
2026-07-26T22:33:03.2030701Z         "int": {
2026-07-26T22:33:03.2030800Z           "complete": true,
2026-07-26T22:33:03.2030886Z           "evidence": [
2026-07-26T22:33:03.2030967Z             {
2026-07-26T22:33:03.2031091Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:03.2031190Z               "line": 262
2026-07-26T22:33:03.2031287Z             },
2026-07-26T22:33:03.2031406Z             {
2026-07-26T22:33:03.2031647Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:03.2031768Z               "line": 289
2026-07-26T22:33:03.2031852Z             },
2026-07-26T22:33:03.2031942Z             {
2026-07-26T22:33:03.2032072Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:03.2032167Z               "line": 417
2026-07-26T22:33:03.2032248Z             }
2026-07-26T22:33:03.2032330Z           ]
2026-07-26T22:33:03.2032406Z         },
2026-07-26T22:33:03.2032487Z         "unit": {
2026-07-26T22:33:03.2032568Z           "complete": true,
2026-07-26T22:33:03.2032664Z           "evidence": [
2026-07-26T22:33:03.2032739Z             {
2026-07-26T22:33:03.2032858Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2032950Z               "line": 2338
2026-07-26T22:33:03.2033073Z             },
2026-07-26T22:33:03.2033173Z             {
2026-07-26T22:33:03.2033279Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2033360Z               "line": 3620
2026-07-26T22:33:03.2033450Z             },
2026-07-26T22:33:03.2033545Z             {
2026-07-26T22:33:03.2033693Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2033787Z               "line": 3649
2026-07-26T22:33:03.2034085Z             },
2026-07-26T22:33:03.2034175Z             {
2026-07-26T22:33:03.2034277Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2034358Z               "line": 3662
2026-07-26T22:33:03.2034443Z             }
2026-07-26T22:33:03.2034524Z           ]
2026-07-26T22:33:03.2034615Z         }
2026-07-26T22:33:03.2034691Z       }
2026-07-26T22:33:03.2034786Z     },
2026-07-26T22:33:03.2034858Z     {
2026-07-26T22:33:03.2034977Z       "id": "REQ-RC-CROSS-NODE-ATTACH",
2026-07-26T22:33:03.2036976Z       "title": "Bug #4: spt rc to a remote endpoint fails with 'no live session' though endpoint list shows it Active — rc.rs:1063 resolves only the LOCAL broker session table and always dials loopback, never consulting the registry or dialing the owning node (the cross-node attach transport exists in the broker; only the client leg is missing). Fix: on a local resolve miss, resolve the owning node from the registry (reuse resolve_across_visible), net_dial that node, and run a remote session-resolve + serve_attach round-trip (mirror the wansend resolve-dial-round-trip pattern). Shares the resolve-owning-node primitive with REQ-WAN-SEND-DELIVERY. See docs/NEXT-MILESTONE-BUG-TRIAGE.md #4.",
2026-07-26T22:33:03.2037177Z       "requiredStages": [
2026-07-26T22:33:03.2037272Z         "doc",
2026-07-26T22:33:03.2037357Z         "impl",
2026-07-26T22:33:03.2037450Z         "unit",
2026-07-26T22:33:03.2037535Z         "int"
2026-07-26T22:33:03.2037615Z       ],
2026-07-26T22:33:03.2037706Z       "stages": {
2026-07-26T22:33:03.2037797Z         "doc": {
2026-07-26T22:33:03.2037887Z           "complete": true,
2026-07-26T22:33:03.2037968Z           "evidence": [
2026-07-26T22:33:03.2038054Z             {
2026-07-26T22:33:03.2038154Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.2038244Z               "line": 670
2026-07-26T22:33:03.2038340Z             }
2026-07-26T22:33:03.2038422Z           ]
2026-07-26T22:33:03.2038512Z         },
2026-07-26T22:33:03.2038602Z         "impl": {
2026-07-26T22:33:03.2038708Z           "complete": true,
2026-07-26T22:33:03.2038793Z           "evidence": [
2026-07-26T22:33:03.2038874Z             {
2026-07-26T22:33:03.2039061Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:03.2039150Z               "line": 209
2026-07-26T22:33:03.2039226Z             },
2026-07-26T22:33:03.2039321Z             {
2026-07-26T22:33:03.2039439Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:03.2039538Z               "line": 235
2026-07-26T22:33:03.2039619Z             },
2026-07-26T22:33:03.2039701Z             {
2026-07-26T22:33:03.2039824Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:03.2039905Z               "line": 301
2026-07-26T22:33:03.2039987Z             },
2026-07-26T22:33:03.2040068Z             {
2026-07-26T22:33:03.2040191Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:03.2040268Z               "line": 657
2026-07-26T22:33:03.2040354Z             },
2026-07-26T22:33:03.2040435Z             {
2026-07-26T22:33:03.2040558Z               "path": "crates/spt-net/src/net/attach.rs",
2026-07-26T22:33:03.2040645Z               "line": 85
2026-07-26T22:33:03.2040730Z             },
2026-07-26T22:33:03.2040811Z             {
2026-07-26T22:33:03.2040916Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2041007Z               "line": 1716
2026-07-26T22:33:03.2041093Z             },
2026-07-26T22:33:03.2041173Z             {
2026-07-26T22:33:03.2041275Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2041374Z               "line": 2179
2026-07-26T22:33:03.2041469Z             },
2026-07-26T22:33:03.2041551Z             {
2026-07-26T22:33:03.2041656Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.2041741Z               "line": 126
2026-07-26T22:33:03.2041837Z             }
2026-07-26T22:33:03.2041919Z           ]
2026-07-26T22:33:03.2042013Z         },
2026-07-26T22:33:03.2042093Z         "int": {
2026-07-26T22:33:03.2042304Z           "complete": true,
2026-07-26T22:33:03.2042394Z           "evidence": [
2026-07-26T22:33:03.2042484Z             {
2026-07-26T22:33:03.2042599Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-07-26T22:33:03.2042699Z               "line": 531
2026-07-26T22:33:03.2042779Z             },
2026-07-26T22:33:03.2042862Z             {
2026-07-26T22:33:03.2042966Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.2043066Z               "line": 1605
2026-07-26T22:33:03.2043142Z             }
2026-07-26T22:33:03.2043229Z           ]
2026-07-26T22:33:03.2043304Z         },
2026-07-26T22:33:03.2043394Z         "unit": {
2026-07-26T22:33:03.2043491Z           "complete": true,
2026-07-26T22:33:03.2043586Z           "evidence": [
2026-07-26T22:33:03.2043667Z             {
2026-07-26T22:33:03.2043901Z               "path": "crates/spt-net/src/net/attach.rs",
2026-07-26T22:33:03.2043985Z               "line": 225
2026-07-26T22:33:03.2044077Z             },
2026-07-26T22:33:03.2044159Z             {
2026-07-26T22:33:03.2044272Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.2044362Z               "line": 1562
2026-07-26T22:33:03.2044443Z             }
2026-07-26T22:33:03.2044533Z           ]
2026-07-26T22:33:03.2044613Z         }
2026-07-26T22:33:03.2044702Z       }
2026-07-26T22:33:03.2044784Z     },
2026-07-26T22:33:03.2044865Z     {
2026-07-26T22:33:03.2044969Z       "id": "REQ-RC-DISPLAY-SOLE-WRITER",
2026-07-26T22:33:03.2052136Z       "title": "TEARDOWN-AUTHORITY W5 (hertz RCA 3 bug 1, 2026-07-19 — REPRODUCED on 0.38.1 CLI + 0.38.1 broker; doyle ruled, and it CORRECTS an incomplete v0.38.1 call of doyle's own): while `spt rc` owns the terminal (raw / alternate screen), rc is the SOLE writer to that display — no background thread may write to the inherited stderr. TODAY: BrainConn::split_with_reader (spt-daemon/src/brain.rs:253-270) unconditionally eprintln!s `PUMP_IPC_READER: spawned` / `exited` from its reader thread. Every reconnect attempt calls establish_attach -> Brain::cold_start_pump (rc.rs:1700-1712), and reconnect_banner_bytes (rc.rs:2040-2054) deliberately clears/homes and leaves the cursor immediately after the countdown with NO trailing newline — so the marker lands exactly at that cursor and the operator sees `Reconnecting to local daemon... 9sPUMP_IPC_READER: spawned`. Field screenshot confirms it also reaches the harness alt screen on a real `endpoint run` + `rc --take`. WHY THIS IS A CORRECTION, ON THE RECORD: v0.38.1's REQ-RC-SINGLE-PUMP-BRAIN removed the DOUBLE construction and doyle ruled the surviving single banner 'truthful, keep it' and classified the change Internal (diagnostic hygiene, not user-facing). Both halves of that ruling were wrong on facts doyle did not check: the marker is not merely a startup diagnostic, it is rendered INTO an rc-owned display, so it was user-facing all along and v0.38.1 reduced rather than eliminated the corruption. FIX: delete both unconditional eprintln diagnostics from the pump reader thread. If the observability is still wanted it goes to the daemon's persistent diagnostic sink or an explicit opt-in debug trace that NEVER inherits an interactive client's stderr — never to a stderr an attached client owns. Grounding: ADR-0043 terminal render lifecycle (one renderer owns the baseline); CONTEXT.md:33-36 (the broker's internals are not a client-visible surface). Gate: impl — diagnostics removed from split_with_reader (and any sibling unconditional client-inherited stderr write on the pump path); unit — insufficient alone and explicitly NOT the gate (the defect is cross-thread out-of-band stderr, which a banner-byte unit cannot observe); int — drive the REAL reconnect-banner path with the child's stderr captured into the SAME sink as the rendered terminal and assert neither PUMP marker appears anywhere in the captured stream, PLUS assert an ordinary initial `spt rc` is marker-free.",
2026-07-26T22:33:03.2052287Z       "requiredStages": [
2026-07-26T22:33:03.2052373Z         "impl",
2026-07-26T22:33:03.2052568Z         "int"
2026-07-26T22:33:03.2052653Z       ],
2026-07-26T22:33:03.2052739Z       "stages": {
2026-07-26T22:33:03.2052815Z         "doc": {
2026-07-26T22:33:03.2052921Z           "complete": false,
2026-07-26T22:33:03.2053010Z           "evidence": []
2026-07-26T22:33:03.2053092Z         },
2026-07-26T22:33:03.2053174Z         "impl": {
2026-07-26T22:33:03.2053268Z           "complete": true,
2026-07-26T22:33:03.2053349Z           "evidence": [
2026-07-26T22:33:03.2053431Z             {
2026-07-26T22:33:03.2053555Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.2053649Z               "line": 253
2026-07-26T22:33:03.2053721Z             },
2026-07-26T22:33:03.2053807Z             {
2026-07-26T22:33:03.2053917Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.2054007Z               "line": 285
2026-07-26T22:33:03.2054212Z             },
2026-07-26T22:33:03.2054298Z             {
2026-07-26T22:33:03.2054428Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.2054531Z               "line": 411
2026-07-26T22:33:03.2054632Z             }
2026-07-26T22:33:03.2054710Z           ]
2026-07-26T22:33:03.2054795Z         },
2026-07-26T22:33:03.2054879Z         "int": {
2026-07-26T22:33:03.2054978Z           "complete": true,
2026-07-26T22:33:03.2055060Z           "evidence": [
2026-07-26T22:33:03.2055149Z             {
2026-07-26T22:33:03.2055277Z               "path": "crates/spt/tests/rc_attach_truth.rs",
2026-07-26T22:33:03.2055368Z               "line": 594
2026-07-26T22:33:03.2055450Z             }
2026-07-26T22:33:03.2055525Z           ]
2026-07-26T22:33:03.2055601Z         },
2026-07-26T22:33:03.2055682Z         "unit": {
2026-07-26T22:33:03.2055778Z           "complete": false,
2026-07-26T22:33:03.2055877Z           "evidence": []
2026-07-26T22:33:03.2055974Z         }
2026-07-26T22:33:03.2056060Z       }
2026-07-26T22:33:03.2056140Z     },
2026-07-26T22:33:03.2056225Z     {
2026-07-26T22:33:03.2056341Z       "id": "REQ-RC-HARNESS-ONLY-REFUSAL",
2026-07-26T22:33:03.2059078Z       "title": "RC-RENDER-TRUTH W1 (ADR-0042 decision 3, hertz elevated-endpoints RCA core leg 1): direct `spt rc <id>` preflights the already-known harness_only/controllable=Some(false) fact (local + gossiped rows both carry it) and refuses BEFORE any attach/stream with truthful copy naming the actual state ('online but harness-hosted; spt does not own its terminal') — never the stale-row guess ('it may have ended, or the registry row is stale'). Reproduced deterministically 2x live on an ONLINE - HARNESS ONLY endpoint. RC support for harness-hosted endpoints is NOT claimed until the elevated PTY-host satellite exists (standing ruling). Gate: impl — pre-stream preflight + truthful copy; unit — harness-only row refuses pre-dial with the new copy, non-harness rows unaffected; int — live remote Instance{harness_only:true} => direct rc refuses pre-stream, names harness-hosted, never says stale; doc — ADR-0042.",
2026-07-26T22:33:03.2059189Z       "requiredStages": [
2026-07-26T22:33:03.2059284Z         "doc",
2026-07-26T22:33:03.2059393Z         "impl",
2026-07-26T22:33:03.2059480Z         "unit",
2026-07-26T22:33:03.2059575Z         "int"
2026-07-26T22:33:03.2059646Z       ],
2026-07-26T22:33:03.2059747Z       "stages": {
2026-07-26T22:33:03.2059833Z         "doc": {
2026-07-26T22:33:03.2059927Z           "complete": true,
2026-07-26T22:33:03.2060013Z           "evidence": [
2026-07-26T22:33:03.2060105Z             {
2026-07-26T22:33:03.2060228Z               "path": "docs/adr/0042-rc-attach-truth.md",
2026-07-26T22:33:03.2060322Z               "line": 61
2026-07-26T22:33:03.2060407Z             }
2026-07-26T22:33:03.2060499Z           ]
2026-07-26T22:33:03.2060574Z         },
2026-07-26T22:33:03.2060663Z         "impl": {
2026-07-26T22:33:03.2060759Z           "complete": true,
2026-07-26T22:33:03.2060864Z           "evidence": [
2026-07-26T22:33:03.2060949Z             {
2026-07-26T22:33:03.2061059Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2061250Z               "line": 1207
2026-07-26T22:33:03.2061373Z             },
2026-07-26T22:33:03.2061456Z             {
2026-07-26T22:33:03.2061574Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2065553Z               "line": 1521
2026-07-26T22:33:03.2065663Z             },
2026-07-26T22:33:03.2065737Z             {
2026-07-26T22:33:03.2065861Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.2065957Z               "line": 198
2026-07-26T22:33:03.2066038Z             }
2026-07-26T22:33:03.2066118Z           ]
2026-07-26T22:33:03.2066204Z         },
2026-07-26T22:33:03.2066291Z         "int": {
2026-07-26T22:33:03.2066386Z           "complete": true,
2026-07-26T22:33:03.2066466Z           "evidence": [
2026-07-26T22:33:03.2066549Z             {
2026-07-26T22:33:03.2066686Z               "path": "crates/spt/tests/rc_attach_truth.rs",
2026-07-26T22:33:03.2066916Z               "line": 510
2026-07-26T22:33:03.2067001Z             }
2026-07-26T22:33:03.2067090Z           ]
2026-07-26T22:33:03.2067178Z         },
2026-07-26T22:33:03.2067254Z         "unit": {
2026-07-26T22:33:03.2067354Z           "complete": true,
2026-07-26T22:33:03.2067434Z           "evidence": [
2026-07-26T22:33:03.2067531Z             {
2026-07-26T22:33:03.2067635Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2067734Z               "line": 2471
2026-07-26T22:33:03.2067818Z             }
2026-07-26T22:33:03.2067898Z           ]
2026-07-26T22:33:03.2067982Z         }
2026-07-26T22:33:03.2068064Z       }
2026-07-26T22:33:03.2068137Z     },
2026-07-26T22:33:03.2068218Z     {
2026-07-26T22:33:03.2068325Z       "id": "REQ-RC-HONEST-SESSION-AUTHORITY",
2026-07-26T22:33:03.2071657Z       "title": "RC-RENDER-TRUTH W1 (ADR-0042 decision 1, hertz perri-contradiction RCA): normal `spt rc` consults the ADR-0041 single honest-session authority BEFORE the persisted-offline fast-fail — run the bounded SessionProbe::has_live_session_honest gate; honest session exists means attach via run_attach_session_confirmed regardless of persisted status; no honest session means the existing offline refusal stands; claimed session with dead client tree means refusal/reap, NEVER attach. Reuse SessionProbe — no new liveness heuristic. Kills the authority split where rc refused ('offline — nothing to attach to') while endpoint run --resume reattached to the same live session. Gate: impl — the pre-fast-fail probe + session-confirmed routing; unit — probe-true routes to session-confirmed attach, probe-false keeps the refusal, dead-tree claim refuses; int — the 3-row regression matrix: offline persisted row + honest live broker session => rc attaches; offline + no session => existing refusal; zombie/dead client tree => refusal, never attach; doc — ADR-0042.",
2026-07-26T22:33:03.2071777Z       "requiredStages": [
2026-07-26T22:33:03.2071862Z         "doc",
2026-07-26T22:33:03.2071948Z         "impl",
2026-07-26T22:33:03.2072030Z         "unit",
2026-07-26T22:33:03.2072111Z         "int"
2026-07-26T22:33:03.2072205Z       ],
2026-07-26T22:33:03.2072278Z       "stages": {
2026-07-26T22:33:03.2072359Z         "doc": {
2026-07-26T22:33:03.2072459Z           "complete": true,
2026-07-26T22:33:03.2072549Z           "evidence": [
2026-07-26T22:33:03.2072631Z             {
2026-07-26T22:33:03.2072754Z               "path": "docs/adr/0042-rc-attach-truth.md",
2026-07-26T22:33:03.2072849Z               "line": 45
2026-07-26T22:33:03.2072936Z             }
2026-07-26T22:33:03.2073012Z           ]
2026-07-26T22:33:03.2073097Z         },
2026-07-26T22:33:03.2073179Z         "impl": {
2026-07-26T22:33:03.2073275Z           "complete": true,
2026-07-26T22:33:03.2073364Z           "evidence": [
2026-07-26T22:33:03.2073450Z             {
2026-07-26T22:33:03.2073547Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2073647Z               "line": 1071
2026-07-26T22:33:03.2073730Z             },
2026-07-26T22:33:03.2073825Z             {
2026-07-26T22:33:03.2073931Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2074126Z               "line": 1135
2026-07-26T22:33:03.2074198Z             },
2026-07-26T22:33:03.2074279Z             {
2026-07-26T22:33:03.2074379Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2074473Z               "line": 1470
2026-07-26T22:33:03.2074552Z             }
2026-07-26T22:33:03.2074637Z           ]
2026-07-26T22:33:03.2074717Z         },
2026-07-26T22:33:03.2074803Z         "int": {
2026-07-26T22:33:03.2074900Z           "complete": true,
2026-07-26T22:33:03.2074994Z           "evidence": [
2026-07-26T22:33:03.2075075Z             {
2026-07-26T22:33:03.2075201Z               "path": "crates/spt/tests/rc_attach_truth.rs",
2026-07-26T22:33:03.2075285Z               "line": 278
2026-07-26T22:33:03.2075375Z             },
2026-07-26T22:33:03.2075452Z             {
2026-07-26T22:33:03.2075571Z               "path": "crates/spt/tests/rc_attach_truth.rs",
2026-07-26T22:33:03.2075752Z               "line": 341
2026-07-26T22:33:03.2075844Z             },
2026-07-26T22:33:03.2075938Z             {
2026-07-26T22:33:03.2076056Z               "path": "crates/spt/tests/rc_attach_truth.rs",
2026-07-26T22:33:03.2076137Z               "line": 376
2026-07-26T22:33:03.2076218Z             }
2026-07-26T22:33:03.2076297Z           ]
2026-07-26T22:33:03.2076392Z         },
2026-07-26T22:33:03.2076479Z         "unit": {
2026-07-26T22:33:03.2076570Z           "complete": true,
2026-07-26T22:33:03.2076664Z           "evidence": [
2026-07-26T22:33:03.2076750Z             {
2026-07-26T22:33:03.2076851Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2076951Z               "line": 2424
2026-07-26T22:33:03.2077026Z             }
2026-07-26T22:33:03.2077104Z           ]
2026-07-26T22:33:03.2077189Z         }
2026-07-26T22:33:03.2077279Z       }
2026-07-26T22:33:03.2077360Z     },
2026-07-26T22:33:03.2077447Z     {
2026-07-26T22:33:03.2077551Z       "id": "REQ-RC-IDENTITY",
2026-07-26T22:33:03.2079912Z       "title": "`spt rc` overlays a persistent endpoint-identity marker so the operator always groks which endpoint they control: a reserved TOP status row via a DECSTBM scroll-region (shrink the PTY's reported rows by 1, own the row), right-aligned `SUBNET : ENDPOINT_ID @ NODE`, CYAN text. Re-assert the margin + repaint on alt-screen enter / DECSTBM reset / resize (output-scanning, like the existing mouse_scanner). NO window title (the harness, e.g. CC, owns it for busyness — OSC dropped). Resolve subnet/node/id once at attach (perch/registry read) and thread into the pump; subnet = the endpoint's home/primary (\"local\" if none). The literal floating rounded-rectangle corner box is DEFERRED to the future web-based GUI (not a grid-model rc — that lift is better spent on the GUI). (v0.16.0)",
2026-07-26T22:33:03.2080023Z       "requiredStages": [
2026-07-26T22:33:03.2080109Z         "impl",
2026-07-26T22:33:03.2080203Z         "unit",
2026-07-26T22:33:03.2080290Z         "int"
2026-07-26T22:33:03.2080372Z       ],
2026-07-26T22:33:03.2080452Z       "stages": {
2026-07-26T22:33:03.2080552Z         "doc": {
2026-07-26T22:33:03.2080643Z           "complete": false,
2026-07-26T22:33:03.2080752Z           "evidence": []
2026-07-26T22:33:03.2080833Z         },
2026-07-26T22:33:03.2080925Z         "impl": {
2026-07-26T22:33:03.2081016Z           "complete": true,
2026-07-26T22:33:03.2081109Z           "evidence": [
2026-07-26T22:33:03.2081186Z             {
2026-07-26T22:33:03.2081292Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2081382Z               "line": 226
2026-07-26T22:33:03.2081462Z             },
2026-07-26T22:33:03.2081542Z             {
2026-07-26T22:33:03.2081685Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2081774Z               "line": 240
2026-07-26T22:33:03.2081850Z             },
2026-07-26T22:33:03.2081946Z             {
2026-07-26T22:33:03.2082051Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2082146Z               "line": 254
2026-07-26T22:33:03.2082227Z             },
2026-07-26T22:33:03.2082318Z             {
2026-07-26T22:33:03.2082552Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2082642Z               "line": 276
2026-07-26T22:33:03.2082718Z             },
2026-07-26T22:33:03.2082804Z             {
2026-07-26T22:33:03.2082895Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2082980Z               "line": 287
2026-07-26T22:33:03.2083051Z             },
2026-07-26T22:33:03.2083142Z             {
2026-07-26T22:33:03.2083234Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2083353Z               "line": 305
2026-07-26T22:33:03.2083462Z             },
2026-07-26T22:33:03.2083554Z             {
2026-07-26T22:33:03.2083657Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2083748Z               "line": 317
2026-07-26T22:33:03.2083825Z             },
2026-07-26T22:33:03.2083920Z             {
2026-07-26T22:33:03.2084117Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2084212Z               "line": 351
2026-07-26T22:33:03.2084300Z             },
2026-07-26T22:33:03.2084390Z             {
2026-07-26T22:33:03.2084491Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2084582Z               "line": 405
2026-07-26T22:33:03.2084667Z             }
2026-07-26T22:33:03.2084753Z           ]
2026-07-26T22:33:03.2084830Z         },
2026-07-26T22:33:03.2084925Z         "int": {
2026-07-26T22:33:03.2085020Z           "complete": true,
2026-07-26T22:33:03.2085117Z           "evidence": [
2026-07-26T22:33:03.2085197Z             {
2026-07-26T22:33:03.2085296Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2085388Z               "line": 4152
2026-07-26T22:33:03.2085478Z             }
2026-07-26T22:33:03.2085554Z           ]
2026-07-26T22:33:03.2085640Z         },
2026-07-26T22:33:03.2085726Z         "unit": {
2026-07-26T22:33:03.2085826Z           "complete": true,
2026-07-26T22:33:03.2085912Z           "evidence": [
2026-07-26T22:33:03.2085993Z             {
2026-07-26T22:33:03.2086094Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2086202Z               "line": 4017
2026-07-26T22:33:03.2086279Z             },
2026-07-26T22:33:03.2086365Z             {
2026-07-26T22:33:03.2086465Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2086550Z               "line": 4035
2026-07-26T22:33:03.2086649Z             },
2026-07-26T22:33:03.2086726Z             {
2026-07-26T22:33:03.2086834Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2086919Z               "line": 4053
2026-07-26T22:33:03.2087000Z             },
2026-07-26T22:33:03.2087077Z             {
2026-07-26T22:33:03.2087182Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2087267Z               "line": 4089
2026-07-26T22:33:03.2087354Z             },
2026-07-26T22:33:03.2087435Z             {
2026-07-26T22:33:03.2087544Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2087639Z               "line": 4096
2026-07-26T22:33:03.2087721Z             },
2026-07-26T22:33:03.2087811Z             {
2026-07-26T22:33:03.2087910Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2087998Z               "line": 4109
2026-07-26T22:33:03.2088088Z             },
2026-07-26T22:33:03.2088169Z             {
2026-07-26T22:33:03.2088269Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2088355Z               "line": 4137
2026-07-26T22:33:03.2088445Z             }
2026-07-26T22:33:03.2088526Z           ]
2026-07-26T22:33:03.2088618Z         }
2026-07-26T22:33:03.2088694Z       }
2026-07-26T22:33:03.2088783Z     },
2026-07-26T22:33:03.2088860Z     {
2026-07-26T22:33:03.2089079Z       "id": "REQ-RC-IDMARKER-DISABLE",
2026-07-26T22:33:03.2090482Z       "title": "Bugs #14 + #7/#8 (marker half): feature-flag the top-right StatusRow endpoint-id marker OFF (rc.rs:198-307). It is a one-shot absolutely-positioned paint that scrolls off-screen and is not re-stickied (#14), and its DECSC/clear/SGR injection splices into the harness in-flight drawing causing residual artifacts (#7/#8). Ship disabled next release (operator: save the concept for a future web SPT GUI); revisit as a proper per-frame sticky overlay only once REQ-BROKER-SCREEN-GRID provides the screen model. See docs/NEXT-MILESTONE-BUG-TRIAGE.md #14.",
2026-07-26T22:33:03.2090698Z       "requiredStages": [
2026-07-26T22:33:03.2090797Z         "impl",
2026-07-26T22:33:03.2090874Z         "unit"
2026-07-26T22:33:03.2090960Z       ],
2026-07-26T22:33:03.2091041Z       "stages": {
2026-07-26T22:33:03.2091126Z         "doc": {
2026-07-26T22:33:03.2091223Z           "complete": false,
2026-07-26T22:33:03.2091308Z           "evidence": []
2026-07-26T22:33:03.2091389Z         },
2026-07-26T22:33:03.2091480Z         "impl": {
2026-07-26T22:33:03.2091566Z           "complete": true,
2026-07-26T22:33:03.2091655Z           "evidence": [
2026-07-26T22:33:03.2091736Z             {
2026-07-26T22:33:03.2091942Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2092036Z               "line": 213
2026-07-26T22:33:03.2092122Z             },
2026-07-26T22:33:03.2092208Z             {
2026-07-26T22:33:03.2092306Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2092391Z               "line": 1594
2026-07-26T22:33:03.2092472Z             }
2026-07-26T22:33:03.2092559Z           ]
2026-07-26T22:33:03.2092635Z         },
2026-07-26T22:33:03.2092715Z         "int": {
2026-07-26T22:33:03.2092802Z           "complete": false,
2026-07-26T22:33:03.2092892Z           "evidence": []
2026-07-26T22:33:03.2092977Z         },
2026-07-26T22:33:03.2093058Z         "unit": {
2026-07-26T22:33:03.2093160Z           "complete": true,
2026-07-26T22:33:03.2093250Z           "evidence": [
2026-07-26T22:33:03.2093349Z             {
2026-07-26T22:33:03.2093446Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2093540Z               "line": 4007
2026-07-26T22:33:03.2093630Z             }
2026-07-26T22:33:03.2093722Z           ]
2026-07-26T22:33:03.2093804Z         }
2026-07-26T22:33:03.2093884Z       }
2026-07-26T22:33:03.2093974Z     },
2026-07-26T22:33:03.2094052Z     {
2026-07-26T22:33:03.2094156Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-07-26T22:33:03.2100034Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-07-26T22:33:03.2100280Z       "requiredStages": [
2026-07-26T22:33:03.2100351Z         "doc",
2026-07-26T22:33:03.2100442Z         "impl",
2026-07-26T22:33:03.2100524Z         "unit"
2026-07-26T22:33:03.2100614Z       ],
2026-07-26T22:33:03.2100689Z       "stages": {
2026-07-26T22:33:03.2100776Z         "doc": {
2026-07-26T22:33:03.2100872Z           "complete": true,
2026-07-26T22:33:03.2100961Z           "evidence": [
2026-07-26T22:33:03.2101047Z             {
2026-07-26T22:33:03.2101153Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.2101234Z               "line": 403
2026-07-26T22:33:03.2101319Z             },
2026-07-26T22:33:03.2101396Z             {
2026-07-26T22:33:03.2101515Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.2101605Z               "line": 477
2026-07-26T22:33:03.2101792Z             }
2026-07-26T22:33:03.2101868Z           ]
2026-07-26T22:33:03.2101954Z         },
2026-07-26T22:33:03.2102025Z         "impl": {
2026-07-26T22:33:03.2102131Z           "complete": true,
2026-07-26T22:33:03.2102225Z           "evidence": [
2026-07-26T22:33:03.2102306Z             {
2026-07-26T22:33:03.2102408Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2102502Z               "line": 486
2026-07-26T22:33:03.2102577Z             },
2026-07-26T22:33:03.2102662Z             {
2026-07-26T22:33:03.2102763Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2102847Z               "line": 545
2026-07-26T22:33:03.2102927Z             },
2026-07-26T22:33:03.2103009Z             {
2026-07-26T22:33:03.2103114Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2103209Z               "line": 560
2026-07-26T22:33:03.2103290Z             },
2026-07-26T22:33:03.2103372Z             {
2026-07-26T22:33:03.2103472Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2103561Z               "line": 575
2026-07-26T22:33:03.2103638Z             },
2026-07-26T22:33:03.2103724Z             {
2026-07-26T22:33:03.2103843Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2103929Z               "line": 624
2026-07-26T22:33:03.2104011Z             }
2026-07-26T22:33:03.2104096Z           ]
2026-07-26T22:33:03.2104177Z         },
2026-07-26T22:33:03.2104253Z         "int": {
2026-07-26T22:33:03.2104350Z           "complete": false,
2026-07-26T22:33:03.2104434Z           "evidence": []
2026-07-26T22:33:03.2104520Z         },
2026-07-26T22:33:03.2104602Z         "unit": {
2026-07-26T22:33:03.2104697Z           "complete": true,
2026-07-26T22:33:03.2104782Z           "evidence": [
2026-07-26T22:33:03.2104863Z             {
2026-07-26T22:33:03.2104965Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2105059Z               "line": 3677
2026-07-26T22:33:03.2105140Z             },
2026-07-26T22:33:03.2105232Z             {
2026-07-26T22:33:03.2105332Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2105430Z               "line": 3792
2026-07-26T22:33:03.2105520Z             }
2026-07-26T22:33:03.2105602Z           ]
2026-07-26T22:33:03.2105684Z         }
2026-07-26T22:33:03.2105773Z       }
2026-07-26T22:33:03.2105854Z     },
2026-07-26T22:33:03.2105931Z     {
2026-07-26T22:33:03.2106032Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-07-26T22:33:03.2110420Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-07-26T22:33:03.2110641Z       "requiredStages": [
2026-07-26T22:33:03.2110840Z         "doc",
2026-07-26T22:33:03.2110916Z         "impl",
2026-07-26T22:33:03.2110997Z         "unit"
2026-07-26T22:33:03.2111079Z       ],
2026-07-26T22:33:03.2111160Z       "stages": {
2026-07-26T22:33:03.2111240Z         "doc": {
2026-07-26T22:33:03.2111336Z           "complete": true,
2026-07-26T22:33:03.2111418Z           "evidence": [
2026-07-26T22:33:03.2111503Z             {
2026-07-26T22:33:03.2111612Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.2111708Z               "line": 498
2026-07-26T22:33:03.2111785Z             }
2026-07-26T22:33:03.2111865Z           ]
2026-07-26T22:33:03.2111947Z         },
2026-07-26T22:33:03.2112037Z         "impl": {
2026-07-26T22:33:03.2112113Z           "complete": true,
2026-07-26T22:33:03.2112208Z           "evidence": [
2026-07-26T22:33:03.2112290Z             {
2026-07-26T22:33:03.2112395Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2112485Z               "line": 681
2026-07-26T22:33:03.2112571Z             },
2026-07-26T22:33:03.2112644Z             {
2026-07-26T22:33:03.2112747Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2112829Z               "line": 697
2026-07-26T22:33:03.2112910Z             }
2026-07-26T22:33:03.2112991Z           ]
2026-07-26T22:33:03.2113071Z         },
2026-07-26T22:33:03.2113151Z         "int": {
2026-07-26T22:33:03.2113251Z           "complete": false,
2026-07-26T22:33:03.2113337Z           "evidence": []
2026-07-26T22:33:03.2113416Z         },
2026-07-26T22:33:03.2113501Z         "unit": {
2026-07-26T22:33:03.2113598Z           "complete": true,
2026-07-26T22:33:03.2113679Z           "evidence": [
2026-07-26T22:33:03.2113774Z             {
2026-07-26T22:33:03.2113869Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2113970Z               "line": 3927
2026-07-26T22:33:03.2114046Z             },
2026-07-26T22:33:03.2114131Z             {
2026-07-26T22:33:03.2114232Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2114337Z               "line": 3946
2026-07-26T22:33:03.2114417Z             },
2026-07-26T22:33:03.2114508Z             {
2026-07-26T22:33:03.2114609Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2114694Z               "line": 3958
2026-07-26T22:33:03.2114784Z             },
2026-07-26T22:33:03.2114867Z             {
2026-07-26T22:33:03.2114971Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2115061Z               "line": 3986
2026-07-26T22:33:03.2115147Z             }
2026-07-26T22:33:03.2115224Z           ]
2026-07-26T22:33:03.2115314Z         }
2026-07-26T22:33:03.2115390Z       }
2026-07-26T22:33:03.2115482Z     },
2026-07-26T22:33:03.2115568Z     {
2026-07-26T22:33:03.2115696Z       "id": "REQ-RC-NEWLINE-PRESENTATION-TRUTH",
2026-07-26T22:33:03.2119458Z       "title": "W3 (v0.39.4 field bug 3 ROOT, pinned 2026-07-22): the rc client presents relayed bytes exactly as the emitter addressed them — KNOWN-HAZARDS 7.56. rc's with_vt_output enables ENABLE_PROCESSED_OUTPUT without DISABLE_NEWLINE_AUTO_RETURN (DNAR: zero grep hits tree-wide), so the operator's console translates relayed bare LF into CR+LF — a column reset the emitter never asked for; the /c/config field scraps are capture record t=1784714152501's bare-LF index presented through that mode. Relay byte-clean end to end (why both isolated rigs read NOT-REPRODUCED and the fresh viewer read clean — the synthesized repaint is CUP-absolute). FIX: DNAR joins the with_vt_output composition whenever processed/VT output is enabled; prior-mode capture/restore unchanged; Unix needs nothing (raw mode already clears OPOST/ONLCR). Regression: the W3 captured-bytes rig PAIR (vehicle console without DNAR = field-client model = RED pre-fix; with DNAR = GREEN post-fix) + the minimal LF column-preservation probe through an rc-mode console. Amends REQ-RC-WIN-VT-OUTPUT (#12); kin KH 7.55 + the W3 vehicle-fidelity clause (three console-mode-seam manifestations, one day). Attribution CLOSED when hertz confirms fixed-rc clean on the field session; no debug channel needed.",
2026-07-26T22:33:03.2119778Z       "requiredStages": [
2026-07-26T22:33:03.2119863Z         "doc",
2026-07-26T22:33:03.2119959Z         "impl",
2026-07-26T22:33:03.2120036Z         "unit",
2026-07-26T22:33:03.2120116Z         "int"
2026-07-26T22:33:03.2120202Z       ],
2026-07-26T22:33:03.2120284Z       "stages": {
2026-07-26T22:33:03.2120374Z         "doc": {
2026-07-26T22:33:03.2120464Z           "complete": true,
2026-07-26T22:33:03.2120564Z           "evidence": [
2026-07-26T22:33:03.2120637Z             {
2026-07-26T22:33:03.2120745Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.2120826Z               "line": 793
2026-07-26T22:33:03.2120909Z             },
2026-07-26T22:33:03.2120995Z             {
2026-07-26T22:33:03.2121168Z               "path": "docs/adr/0047-daemon-lifecycle-custody-authority.md",
2026-07-26T22:33:03.2121245Z               "line": 251
2026-07-26T22:33:03.2121331Z             }
2026-07-26T22:33:03.2121409Z           ]
2026-07-26T22:33:03.2121495Z         },
2026-07-26T22:33:03.2121586Z         "impl": {
2026-07-26T22:33:03.2121682Z           "complete": true,
2026-07-26T22:33:03.2121776Z           "evidence": [
2026-07-26T22:33:03.2121857Z             {
2026-07-26T22:33:03.2121949Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2122039Z               "line": 764
2026-07-26T22:33:03.2122115Z             }
2026-07-26T22:33:03.2122197Z           ]
2026-07-26T22:33:03.2122283Z         },
2026-07-26T22:33:03.2122368Z         "int": {
2026-07-26T22:33:03.2122458Z           "complete": true,
2026-07-26T22:33:03.2122555Z           "evidence": [
2026-07-26T22:33:03.2122635Z             {
2026-07-26T22:33:03.2122783Z               "path": "crates/spt-daemon/tests/attach_resize_capture.rs",
2026-07-26T22:33:03.2122880Z               "line": 417
2026-07-26T22:33:03.2122959Z             },
2026-07-26T22:33:03.2123040Z             {
2026-07-26T22:33:03.2123199Z               "path": "crates/spt-term/tests/rc_console_newline_presentation.rs",
2026-07-26T22:33:03.2123298Z               "line": 126
2026-07-26T22:33:03.2123379Z             },
2026-07-26T22:33:03.2123466Z             {
2026-07-26T22:33:03.2123636Z               "path": "crates/spt-term/tests/rc_console_newline_presentation.rs",
2026-07-26T22:33:03.2123735Z               "line": 143
2026-07-26T22:33:03.2123811Z             }
2026-07-26T22:33:03.2123916Z           ]
2026-07-26T22:33:03.2123996Z         },
2026-07-26T22:33:03.2124081Z         "unit": {
2026-07-26T22:33:03.2124177Z           "complete": true,
2026-07-26T22:33:03.2124277Z           "evidence": [
2026-07-26T22:33:03.2124357Z             {
2026-07-26T22:33:03.2124506Z               "path": "crates/spt-term/tests/capture_vehicle_fidelity.rs",
2026-07-26T22:33:03.2124592Z               "line": 175
2026-07-26T22:33:03.2124686Z             },
2026-07-26T22:33:03.2124768Z             {
2026-07-26T22:33:03.2124930Z               "path": "crates/spt-term/tests/rc_console_newline_presentation.rs",
2026-07-26T22:33:03.2125015Z               "line": 110
2026-07-26T22:33:03.2125098Z             },
2026-07-26T22:33:03.2125178Z             {
2026-07-26T22:33:03.2125369Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2125460Z               "line": 2663
2026-07-26T22:33:03.2125540Z             }
2026-07-26T22:33:03.2125621Z           ]
2026-07-26T22:33:03.2125703Z         }
2026-07-26T22:33:03.2125779Z       }
2026-07-26T22:33:03.2125869Z     },
2026-07-26T22:33:03.2125950Z     {
2026-07-26T22:33:03.2126076Z       "id": "REQ-RC-QUALIFIED-TARGET-CANONICAL",
2026-07-26T22:33:03.2128758Z       "title": "RC-RENDER-TRUTH W1 (ADR-0042 decision 4, hertz elevated-endpoints RCA core leg 2, doyle seam-confirmed rc.rs establish_attach): the resolver's canonical BARE endpoint id is carried separately from the user-facing qualified target — AttachRequest.endpoint_id is always the bare id (today rc passes the ORIGINAL qualified string; the target's resolve_local_session compares verbatim vs the bare HostedSession.endpoint, so `spt rc id@node`/`subnet:id` dials the RIGHT node then gets a false no-live-session refusal). N-1-additive: bare-form callers are unchanged. Gate: impl — canonical-id carry through establish_attach; unit — Address::parse qualified forms yield bare wire id, user-facing copy keeps the qualified spelling; int — bare + id@node + subnet:id ALL attach against a remote broker-hosted target, wire always carries the canonical bare id; doc — ADR-0042.",
2026-07-26T22:33:03.2129028Z       "requiredStages": [
2026-07-26T22:33:03.2129117Z         "doc",
2026-07-26T22:33:03.2129202Z         "impl",
2026-07-26T22:33:03.2129274Z         "unit",
2026-07-26T22:33:03.2129376Z         "int"
2026-07-26T22:33:03.2129464Z       ],
2026-07-26T22:33:03.2129560Z       "stages": {
2026-07-26T22:33:03.2129642Z         "doc": {
2026-07-26T22:33:03.2129742Z           "complete": true,
2026-07-26T22:33:03.2129827Z           "evidence": [
2026-07-26T22:33:03.2129909Z             {
2026-07-26T22:33:03.2130033Z               "path": "docs/adr/0042-rc-attach-truth.md",
2026-07-26T22:33:03.2130137Z               "line": 67
2026-07-26T22:33:03.2130224Z             }
2026-07-26T22:33:03.2130318Z           ]
2026-07-26T22:33:03.2130400Z         },
2026-07-26T22:33:03.2130490Z         "impl": {
2026-07-26T22:33:03.2130567Z           "complete": true,
2026-07-26T22:33:03.2130652Z           "evidence": [
2026-07-26T22:33:03.2130742Z             {
2026-07-26T22:33:03.2130844Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2130930Z               "line": 1192
2026-07-26T22:33:03.2131009Z             },
2026-07-26T22:33:03.2131100Z             {
2026-07-26T22:33:03.2131235Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2131324Z               "line": 1424
2026-07-26T22:33:03.2131415Z             },
2026-07-26T22:33:03.2131493Z             {
2026-07-26T22:33:03.2131597Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2131686Z               "line": 1784
2026-07-26T22:33:03.2131766Z             },
2026-07-26T22:33:03.2131843Z             {
2026-07-26T22:33:03.2131942Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2132022Z               "line": 1817
2026-07-26T22:33:03.2132118Z             },
2026-07-26T22:33:03.2132204Z             {
2026-07-26T22:33:03.2132360Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.2132442Z               "line": 105
2026-07-26T22:33:03.2132552Z             }
2026-07-26T22:33:03.2132627Z           ]
2026-07-26T22:33:03.2132718Z         },
2026-07-26T22:33:03.2132805Z         "int": {
2026-07-26T22:33:03.2132915Z           "complete": true,
2026-07-26T22:33:03.2133018Z           "evidence": [
2026-07-26T22:33:03.2133120Z             {
2026-07-26T22:33:03.2133214Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2133300Z               "line": 3128
2026-07-26T22:33:03.2133386Z             }
2026-07-26T22:33:03.2133468Z           ]
2026-07-26T22:33:03.2133548Z         },
2026-07-26T22:33:03.2133634Z         "unit": {
2026-07-26T22:33:03.2133735Z           "complete": true,
2026-07-26T22:33:03.2133820Z           "evidence": [
2026-07-26T22:33:03.2133900Z             {
2026-07-26T22:33:03.2134103Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2134201Z               "line": 2457
2026-07-26T22:33:03.2134281Z             },
2026-07-26T22:33:03.2134362Z             {
2026-07-26T22:33:03.2134476Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.2134560Z               "line": 1585
2026-07-26T22:33:03.2134636Z             }
2026-07-26T22:33:03.2134718Z           ]
2026-07-26T22:33:03.2134804Z         }
2026-07-26T22:33:03.2134885Z       }
2026-07-26T22:33:03.2134965Z     },
2026-07-26T22:33:03.2135057Z     {
2026-07-26T22:33:03.2135157Z       "id": "REQ-RC-RECONNECT",
2026-07-26T22:33:03.2140846Z       "title": "B-3 (REMOTE-TRUTH triage §B-3, the operator-asked UX): the rc attach viewport RECONNECTS on a severed transport instead of print-and-exit. Pre-fix rc was one-shot (resolve→dial→attach→pump→parting line); FAULT-MATRIX row 9 over-promised. FIX: the establish sequence (daemon ensure → broker conn → session resolve local-first/cross-node → dial → attach-open w/ A-4b tracing retry → subscribe) is factored into establish_attach and run_attach_inner wraps establish+pump in a loop. RECONNECTABLE class = severed transport ONLY: PumpEnd::BrokerGone (broker-conn EOF class, broker bounce) + the NEW PumpEnd::Severed (serve-side stream EOF AFTER rendered output = remote conn drop — pre-fix MISLABELED as 'detached — still running'; a nothing-rendered EOF stays the honest NoLiveSession refuse). FINAL ends (Exited/Detached/Displaced/Stalled/NoLiveSession) never re-drive — re-attaching a deliberately-ended session is wrong. On sever: full-screen centered 'Reconnecting to {target}…' banner (pure byte-emit like StatusRow; target = owning-node label or 'local daemon'; Q4 UX rule — operator language, internal sever detail never paints), then re-drive establish_attach every RECONNECT_PAUSE (1s) inside RECONNECT_WINDOW (30s, generous for a daemon bounce); a Detach keypress mid-window aborts honestly to [detached]; window expiry → PumpEnd::ReconnectGaveUp with a plain-language give-up line naming the cause, the window, and the retry action (never op/read-err lingo). Per re-establish: fresh OpMinter (ADR-0034 rc tracing per viewport), fresh initial resize (PTY matches the CURRENT terminal), pump-local render cursor resets so the re-serve ring replay REPAINTS the screen the banner cleared. FAULT-MATRIX row 9 made TRUE (F-3), not edited down. Red-first: serve-EOF-after-render → Severed (vs the pre-fix false Detached); only BrokerGone/Severed classify Reconnect.",
2026-07-26T22:33:03.2141099Z       "requiredStages": [
2026-07-26T22:33:03.2141175Z         "doc",
2026-07-26T22:33:03.2141265Z         "impl",
2026-07-26T22:33:03.2141346Z         "unit",
2026-07-26T22:33:03.2141437Z         "int"
2026-07-26T22:33:03.2141518Z       ],
2026-07-26T22:33:03.2141599Z       "stages": {
2026-07-26T22:33:03.2141680Z         "doc": {
2026-07-26T22:33:03.2141781Z           "complete": true,
2026-07-26T22:33:03.2141865Z           "evidence": [
2026-07-26T22:33:03.2141947Z             {
2026-07-26T22:33:03.2142062Z               "path": "docs/FAULT-MATRIX.md",
2026-07-26T22:33:03.2142153Z               "line": 28
2026-07-26T22:33:03.2142236Z             },
2026-07-26T22:33:03.2142331Z             {
2026-07-26T22:33:03.2142437Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-07-26T22:33:03.2142530Z               "line": 249
2026-07-26T22:33:03.2142615Z             },
2026-07-26T22:33:03.2142701Z             {
2026-07-26T22:33:03.2142807Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-07-26T22:33:03.2142901Z               "line": 298
2026-07-26T22:33:03.2142973Z             }
2026-07-26T22:33:03.2143060Z           ]
2026-07-26T22:33:03.2143141Z         },
2026-07-26T22:33:03.2143235Z         "impl": {
2026-07-26T22:33:03.2143322Z           "complete": true,
2026-07-26T22:33:03.2143412Z           "evidence": [
2026-07-26T22:33:03.2143503Z             {
2026-07-26T22:33:03.2143602Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2143685Z               "line": 1668
2026-07-26T22:33:03.2143874Z             },
2026-07-26T22:33:03.2143951Z             {
2026-07-26T22:33:03.2144052Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2144136Z               "line": 1716
2026-07-26T22:33:03.2144228Z             },
2026-07-26T22:33:03.2144305Z             {
2026-07-26T22:33:03.2144404Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2144485Z               "line": 2061
2026-07-26T22:33:03.2144586Z             },
2026-07-26T22:33:03.2144663Z             {
2026-07-26T22:33:03.2144808Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2144898Z               "line": 2089
2026-07-26T22:33:03.2144994Z             },
2026-07-26T22:33:03.2145078Z             {
2026-07-26T22:33:03.2145191Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2145297Z               "line": 2107
2026-07-26T22:33:03.2145478Z             },
2026-07-26T22:33:03.2145559Z             {
2026-07-26T22:33:03.2145660Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2145759Z               "line": 2120
2026-07-26T22:33:03.2145845Z             },
2026-07-26T22:33:03.2145932Z             {
2026-07-26T22:33:03.2146032Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2146112Z               "line": 2154
2026-07-26T22:33:03.2146198Z             },
2026-07-26T22:33:03.2146280Z             {
2026-07-26T22:33:03.2146379Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2146469Z               "line": 2161
2026-07-26T22:33:03.2146552Z             }
2026-07-26T22:33:03.2146637Z           ]
2026-07-26T22:33:03.2146713Z         },
2026-07-26T22:33:03.2146803Z         "int": {
2026-07-26T22:33:03.2146896Z           "complete": true,
2026-07-26T22:33:03.2146989Z           "evidence": [
2026-07-26T22:33:03.2147070Z             {
2026-07-26T22:33:03.2147167Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2147252Z               "line": 2783
2026-07-26T22:33:03.2147337Z             },
2026-07-26T22:33:03.2147433Z             {
2026-07-26T22:33:03.2147563Z               "path": "crates/spt/tests/twohost_cli.rs",
2026-07-26T22:33:03.2147656Z               "line": 839
2026-07-26T22:33:03.2147741Z             }
2026-07-26T22:33:03.2147823Z           ]
2026-07-26T22:33:03.2147910Z         },
2026-07-26T22:33:03.2147990Z         "unit": {
2026-07-26T22:33:03.2148090Z           "complete": true,
2026-07-26T22:33:03.2148176Z           "evidence": [
2026-07-26T22:33:03.2148257Z             {
2026-07-26T22:33:03.2148357Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2148453Z               "line": 3385
2026-07-26T22:33:03.2148534Z             },
2026-07-26T22:33:03.2148629Z             {
2026-07-26T22:33:03.2148729Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2148825Z               "line": 3411
2026-07-26T22:33:03.2148906Z             },
2026-07-26T22:33:03.2149087Z             {
2026-07-26T22:33:03.2149192Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2149306Z               "line": 3421
2026-07-26T22:33:03.2149383Z             },
2026-07-26T22:33:03.2149464Z             {
2026-07-26T22:33:03.2149568Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2149663Z               "line": 3431
2026-07-26T22:33:03.2149746Z             }
2026-07-26T22:33:03.2149831Z           ]
2026-07-26T22:33:03.2149911Z         }
2026-07-26T22:33:03.2150006Z       }
2026-07-26T22:33:03.2150091Z     },
2026-07-26T22:33:03.2150181Z     {
2026-07-26T22:33:03.2150289Z       "id": "REQ-RC-RECONNECT-TRUTH",
2026-07-26T22:33:03.2151984Z       "title": "W3 (LIFECYCLE-TRUTH): rc reconnect never auto-starts a daemon and never hangs forever. ROOTS rig-proven (the operator's long-standing 'stop 2-4 times' bug): (a) an rc client's reconnect loop AUTO-LAUNCHES a daemon via WMI (rig: DAEMON_LAUNCH_VIA_WMI from the rc) — resurrection fights the operator's stops; (b) rc freezes at 'Reconnecting to local daemon…' forever when its session died with the broker. FIX: rc NEVER auto-starts a daemon (reconnect only to an already-up broker; loud 'session lost — daemon down' exit otherwise), bounded reconnect with visible countdown.",
2026-07-26T22:33:03.2152201Z       "requiredStages": [
2026-07-26T22:33:03.2152294Z         "impl",
2026-07-26T22:33:03.2152374Z         "unit",
2026-07-26T22:33:03.2152454Z         "int"
2026-07-26T22:33:03.2152535Z       ],
2026-07-26T22:33:03.2152632Z       "stages": {
2026-07-26T22:33:03.2152722Z         "doc": {
2026-07-26T22:33:03.2152811Z           "complete": false,
2026-07-26T22:33:03.2152896Z           "evidence": []
2026-07-26T22:33:03.2152968Z         },
2026-07-26T22:33:03.2153062Z         "impl": {
2026-07-26T22:33:03.2153156Z           "complete": true,
2026-07-26T22:33:03.2153252Z           "evidence": [
2026-07-26T22:33:03.2153329Z             {
2026-07-26T22:33:03.2153438Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2153620Z               "line": 1558
2026-07-26T22:33:03.2153716Z             },
2026-07-26T22:33:03.2153785Z             {
2026-07-26T22:33:03.2153901Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2153982Z               "line": 1689
2026-07-26T22:33:03.2154063Z             },
2026-07-26T22:33:03.2154143Z             {
2026-07-26T22:33:03.2154245Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2154329Z               "line": 1748
2026-07-26T22:33:03.2154420Z             },
2026-07-26T22:33:03.2154506Z             {
2026-07-26T22:33:03.2154607Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2154691Z               "line": 2070
2026-07-26T22:33:03.2154773Z             },
2026-07-26T22:33:03.2154851Z             {
2026-07-26T22:33:03.2154959Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2155054Z               "line": 2161
2026-07-26T22:33:03.2155131Z             }
2026-07-26T22:33:03.2155223Z           ]
2026-07-26T22:33:03.2155302Z         },
2026-07-26T22:33:03.2155397Z         "int": {
2026-07-26T22:33:03.2155487Z           "complete": true,
2026-07-26T22:33:03.2155592Z           "evidence": [
2026-07-26T22:33:03.2155671Z             {
2026-07-26T22:33:03.2155775Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2155852Z               "line": 3531
2026-07-26T22:33:03.2155944Z             }
2026-07-26T22:33:03.2156014Z           ]
2026-07-26T22:33:03.2156100Z         },
2026-07-26T22:33:03.2156187Z         "unit": {
2026-07-26T22:33:03.2156286Z           "complete": true,
2026-07-26T22:33:03.2156367Z           "evidence": [
2026-07-26T22:33:03.2156458Z             {
2026-07-26T22:33:03.2156553Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2156648Z               "line": 3448
2026-07-26T22:33:03.2156729Z             },
2026-07-26T22:33:03.2156807Z             {
2026-07-26T22:33:03.2156906Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2156991Z               "line": 3465
2026-07-26T22:33:03.2157073Z             },
2026-07-26T22:33:03.2157160Z             {
2026-07-26T22:33:03.2157259Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2157363Z               "line": 3498
2026-07-26T22:33:03.2157446Z             }
2026-07-26T22:33:03.2157540Z           ]
2026-07-26T22:33:03.2157626Z         }
2026-07-26T22:33:03.2157703Z       }
2026-07-26T22:33:03.2157789Z     },
2026-07-26T22:33:03.2157873Z     {
2026-07-26T22:33:03.2157989Z       "id": "REQ-RC-RESIZE-GEOMETRY-EPOCH",
2026-07-26T22:33:03.2178242Z       "title": "A resize transition is ATOMIC from ScreenGrid's perspective: every byte is parsed at the geometry it was EMITTED under. (hertz v0.39.0 field RCA 2026-07-21, doyle re-grounded at source the same hour; P0 — this falsifies a SHIPPED v0.39.0 release claim, so it is a regression, not new scope.) SYMPTOM: right-margin fragments and left-shifted rows on a node where CLI and broker are BOTH 0.39.0 — i.e. exactly the defect the v0.39.0 notes claim fixed. SOURCE (statically provable, no repro box required): broker.rs dispatch_resize calls session.resize(SurfaceSize::new(rows, cols)) (~4557-4559) and only THEN recover_log(&log).set_size_and_notify(rows, cols) (~4560), which reaches self.grid.resize(rows, cols) (~1492) — TWO SEPARATE recover_log acquisitions, so the reader thread's append/parse interleaves between them BY CONSTRUCTION. On ConPTY the resize ITSELF emits a full repaint asynchronously; the reader parses that repaint into the grid at the OLD geometry; the subsequent top-left-preserving grid.resize then faithfully preserves an ALREADY-MISWRAPPED model; the cold attach repaint emits the shift. WHY THE EXISTING TESTS PASS: the spt-term width oracle (REQ-SCREENGRID-WIDTH's int stage) is green 5/5 while the field is red — it never crosses the ConPTY-emission -> grid-geometry -> attach-repaint seam, and the surface mock structurally cannot. The W3 width model is therefore NOT falsified; it is correct work running under a broken geometry transition. FIX — and the record must carry WHY the obvious fix is wrong: merely REORDERING (set grid geometry before invoking the ConPTY resize) is INSUFFICIENT. It is safe on a GROW and unsafe on a SHRINK, because bytes already in flight at the old WIDER geometry are then parsed at the new narrow width and wrap early. Neither pure ordering is correct because the defect is not the ORDER — it is that the grid has no notion of 'these bytes were emitted under the old geometry'. Required shape: quiesce/gate the drain across the ordered surface+grid transition AND carry an explicit geometry EPOCH so parse always reckons at the emitting geometry, with rollback/refetch of the grid geometry if the surface resize fails. Gate: doc — the epoch/barrier contract stated where the resize path is documented, including the shrink counter-example so the insufficient reorder is not re-proposed; impl — barrier + geometry epoch + failure rollback in the dispatch_resize/set_size_and_notify path; unit — a resize whose repaint bytes arrive mid-transition is parsed at the emitting geometry (both grow AND shrink), and a failed surface resize leaves the grid geometry unchanged; int — Windows REAL ConPTY (not the surface mock): resize emits a dense frame, then the synthesized attach repaint is compared against an INDEPENDENT terminal authority, never ScreenGrid against itself. FIXTURE AMENDMENT (hertz field supplement 2026-07-21 second capture, doyle-accepted, carried by todlando at build): the dense frame is ordinary readable PROSE with REPEATED WORDS and punctuation, not sparse synthetic markers — the field captures are semantic corruption of rendered content (`ReQ2`, `ROADMAPnsayh'credertigls`, `Recommend:gdirect REST`, `thii reqw st`, `resdluuion`: clobber, merge, substitution and displacement of width-1 cells MID-ROW), and repeated words are what make a displaced fragment land somewhere that still looks plausible — the shape that let this read as cosmetic. The leg must fail on DELETION, INSERTION, SUBSTITUTION, MERGE or DISPLACEMENT of any width-1 cell, with NO normalization and NO presence-only assertions (full-row untrimmed string equality plus equal row counts satisfies this by construction). CONSTRAINT, binding: the fixture stays inside the region where the authority emulator and ConPTY AGREE — the screen at the resize instant carries no line reaching either margin and loses no row, so reflow-vs-truncate is a no-op on it, and the wrap-crossing prose is emitted AFTER the transition opens, at the new geometry. A fixture crossing the margin at the resize instant would red on emulator POLICY DIVERGENCE rather than on this defect; pinning the wrap policy between authority and ConPTY is separate work and must not be smuggled in here. The comparison is EVERY CELL, including cells expected to be BLANK — not row starts, right margins, or text presence. The dense frame must include erased interior spans and repeated spaces, and those cells must still be blank after the synthesized repaint. (hertz field supplement 2026-07-21, doyle-accepted: the operator confirmed a THIRD corruption shape on the same fully-0.39.0 node — stale characters surviving INSIDE nominal whitespace between words, e.g. `isnsettled`, `fulllyacaptured`. A mis-widthed repaint places glyphs into wrong interior cells; later differential output and EL operations address the CORRECT geometry and so do not necessarily clear them; the synthesized cold repaint then faithfully re-emits the contaminated interior. Accepted as further evidence for THIS requirement, not a new root, on a DISCRIMINATION rather than the prediction: the captured debris is pure ASCII, every glyph width-1, so no width-table or wide-half defect can produce it — and the erase paths are already width-normalized on both halves at screen.rs clear_cell_keep_pen ~416/~420, the span helper ~440-443, and delete/insert_chars ~617-620, with erase_across_a_wide_half_leaves_no_orphan ~1391 passing. Word-scale `isn`+`settled` collapsing across a space is the same shifted-by-N placement as the whole-row left shift, observed at word scale. OPEN DISCRIMINATOR: interior debris in a session where NO resize occurred at any point would mean a SECOND root that this fix will not clear.) BINDING CONSTRAINT on satisfying the blank-cell assertions: NO whitespace special-casing and NO extra clears — the barrier must restore ONE geometry authority for glyph placement AND erasure. A fix that passes by clearing harder satisfies the test and leaves the defect. KNOWN ACCEPTED RESIDUAL (doyle ruling 2026-07-21): a cold attach landing DURING a transition renders the PRE-TRANSITION screen — the held bytes are not parsed yet. Accepted because it is a strict improvement over the shipped behavior on the same input (pre-fix: miswrapped/corrupt; post-fix: stale but coherent). The window is bounded in TIME (settle + one surface call) AND — since REQ-RC-RESIZE-PRESENTATION-BARRIER (built 2026-07-21) — in VISIBILITY: the commit/abort-time sync frame delivers every attached sink, transition-era attachers included, the fresh repaint the moment the barrier tears down, quiet child or not (the successor REQ's commit-time sync frame IS the follow-up seed this residual carried, absorbed by construction). The attach itself still renders the pre-transition screen for the width of the window. REFUSED, so nobody builds it later without a fresh argument: making the attach repaint WAIT on an in-flight transition — that puts a user-facing attach behind the settle cap / serialize wait.",
2026-07-26T22:33:03.2178755Z       "requiredStages": [
2026-07-26T22:33:03.2178852Z         "doc",
2026-07-26T22:33:03.2178929Z         "impl",
2026-07-26T22:33:03.2179099Z         "unit",
2026-07-26T22:33:03.2179177Z         "int"
2026-07-26T22:33:03.2179267Z       ],
2026-07-26T22:33:03.2179365Z       "stages": {
2026-07-26T22:33:03.2179450Z         "doc": {
2026-07-26T22:33:03.2179537Z           "complete": true,
2026-07-26T22:33:03.2183539Z           "evidence": [
2026-07-26T22:33:03.2183664Z             {
2026-07-26T22:33:03.2183863Z               "path": "docs/adr/0031-server-side-screen-grid-render-repaint.md",
2026-07-26T22:33:03.2183988Z               "line": 34
2026-07-26T22:33:03.2184073Z             }
2026-07-26T22:33:03.2184163Z           ]
2026-07-26T22:33:03.2184240Z         },
2026-07-26T22:33:03.2184327Z         "impl": {
2026-07-26T22:33:03.2184416Z           "complete": true,
2026-07-26T22:33:03.2184520Z           "evidence": [
2026-07-26T22:33:03.2184610Z             {
2026-07-26T22:33:03.2184747Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2184855Z               "line": 1026
2026-07-26T22:33:03.2184971Z             },
2026-07-26T22:33:03.2185057Z             {
2026-07-26T22:33:03.2185170Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2185247Z               "line": 1055
2026-07-26T22:33:03.2185329Z             },
2026-07-26T22:33:03.2185405Z             {
2026-07-26T22:33:03.2185523Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2185610Z               "line": 1104
2026-07-26T22:33:03.2185705Z             },
2026-07-26T22:33:03.2185786Z             {
2026-07-26T22:33:03.2185906Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2186163Z               "line": 1117
2026-07-26T22:33:03.2186245Z             },
2026-07-26T22:33:03.2186330Z             {
2026-07-26T22:33:03.2186444Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2186531Z               "line": 1347
2026-07-26T22:33:03.2186612Z             },
2026-07-26T22:33:03.2186687Z             {
2026-07-26T22:33:03.2186807Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2186888Z               "line": 1934
2026-07-26T22:33:03.2186969Z             },
2026-07-26T22:33:03.2187048Z             {
2026-07-26T22:33:03.2187168Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2187249Z               "line": 1957
2026-07-26T22:33:03.2187328Z             },
2026-07-26T22:33:03.2187408Z             {
2026-07-26T22:33:03.2187532Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2187713Z               "line": 1972
2026-07-26T22:33:03.2187804Z             },
2026-07-26T22:33:03.2187896Z             {
2026-07-26T22:33:03.2188014Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2188104Z               "line": 2005
2026-07-26T22:33:03.2188196Z             },
2026-07-26T22:33:03.2188277Z             {
2026-07-26T22:33:03.2188400Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2188492Z               "line": 2096
2026-07-26T22:33:03.2188572Z             },
2026-07-26T22:33:03.2188662Z             {
2026-07-26T22:33:03.2188768Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2188849Z               "line": 5267
2026-07-26T22:33:03.2188925Z             },
2026-07-26T22:33:03.2189126Z             {
2026-07-26T22:33:03.2189244Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.2189344Z               "line": 73
2026-07-26T22:33:03.2189431Z             }
2026-07-26T22:33:03.2189521Z           ]
2026-07-26T22:33:03.2189602Z         },
2026-07-26T22:33:03.2189693Z         "int": {
2026-07-26T22:33:03.2189804Z           "complete": true,
2026-07-26T22:33:03.2189897Z           "evidence": [
2026-07-26T22:33:03.2189977Z             {
2026-07-26T22:33:03.2190140Z               "path": "crates/spt-daemon/tests/resize_geometry_epoch.rs",
2026-07-26T22:33:03.2190230Z               "line": 327
2026-07-26T22:33:03.2190311Z             },
2026-07-26T22:33:03.2190383Z             {
2026-07-26T22:33:03.2190536Z               "path": "crates/spt-daemon/tests/resize_geometry_epoch.rs",
2026-07-26T22:33:03.2190626Z               "line": 336
2026-07-26T22:33:03.2190713Z             }
2026-07-26T22:33:03.2190793Z           ]
2026-07-26T22:33:03.2190883Z         },
2026-07-26T22:33:03.2190964Z         "unit": {
2026-07-26T22:33:03.2191066Z           "complete": true,
2026-07-26T22:33:03.2191160Z           "evidence": [
2026-07-26T22:33:03.2191250Z             {
2026-07-26T22:33:03.2191376Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2191470Z               "line": 7048
2026-07-26T22:33:03.2191551Z             },
2026-07-26T22:33:03.2191638Z             {
2026-07-26T22:33:03.2191752Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2191870Z               "line": 7090
2026-07-26T22:33:03.2191976Z             },
2026-07-26T22:33:03.2192057Z             {
2026-07-26T22:33:03.2192175Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2192260Z               "line": 7115
2026-07-26T22:33:03.2192361Z             },
2026-07-26T22:33:03.2192454Z             {
2026-07-26T22:33:03.2192563Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2192683Z               "line": 7138
2026-07-26T22:33:03.2192792Z             }
2026-07-26T22:33:03.2192873Z           ]
2026-07-26T22:33:03.2192964Z         }
2026-07-26T22:33:03.2193045Z       }
2026-07-26T22:33:03.2193130Z     },
2026-07-26T22:33:03.2193216Z     {
2026-07-26T22:33:03.2193336Z       "id": "REQ-RC-RESIZE-PRESENTATION-BARRIER",
2026-07-26T22:33:03.2217267Z       "title": "During a resize transition, LIVE DELIVERY is barriered along with the grid parse: no attached sink (controller or viewer) ever receives mixed-geometry raw bytes; commit substitutes ONE synthesized sync frame at the target geometry. (hertz post-fix field RCA 2026-07-21 on a fully-0.39.3 node, doyle-accepted with every cite verified at source; SUCCEEDS REQ-RC-RESIZE-GEOMETRY-EPOCH, which shipped correct but scoped to the wrong surface — broker.rs's own ResizeTransition doc states append 'still rings + fans out every chunk exactly as before' during a transition, and OutputLog::append gates ONLY grid.advance. A live attached terminal therefore receives old+new-geometry differentials across an already-resized viewport; the cold-attach repaint model is definitionally blind to that path, which is why the shipped gate was green while the field was red. REQUIREMENT-SCOPE defect: the gate held against documented design.) CONTRACT (ADR-0031 Amendment II): (1) append still assigns seq and rings every chunk, but controller handoff and viewer fan-out are SUPPRESSED during the transition — a skip, never a block or sleep (KH 7.12 intact), and the suppressed window does not count toward the controller Full-eviction deadline; (2) commit replays held segments at their emitting geometry (the geometry-epoch machinery, unchanged), lands the grid at target geometry, then UNDER THE SAME OutputLog LOCK ACQUISITION pushes viewers the size frame FIRST and then one synthesized sync frame (render_repaint at target geometry ++ deferred non-grid bytes) to EVERY attached sink, controller included, before raw fan-out resumes — no raw frame may interleave; (3) the controller sync frame carries watermark seq = highest suppressed seq, so the cursor-of-record advances past the whole suppressed range as-if-written (repaint supersedes; the repaint_initial watermark shape); WIRE-FLAG AMENDMENT (doyle ruling 2026-07-21, from the build's real-wire int finding — the watermark jump would otherwise fatal every STRICT consumer as an output gap and ladder into ControllerIrrecoverablyBehind = marked truncation on every resize under a live controller): OutputEvent gains additive `sync: bool` (serde default false, never serialized when false — the resume_seq D4-1 additive shape), set by the broker on the commit AND abort sync frames AND on every repaint_initial batch; a consumer accepts a FLAGGED FORWARD jump and baselines on it on BOTH dedup paths (the supersession is explicit and broker-authored — B2-sound, nothing silently skipped); FORWARD-ONLY, binding: a flagged frame at/below the cursor dedup-drops exactly as today, never a backward baseline; an UNFLAGGED jump keeps strict reject-gap byte-for-byte; baseline_next_output STAYS as the old-broker x new-client cold-attach compat path (retirement is an N-2 seed at most); N-1 matrix published: new broker x old client = a resize in the mixed-version window ends the attach with a marked truncation (honest termination, strictly better than the pre-fix silent corruption; release notes carry 'update CLI and broker together'), old broker x new client = no flag arrives, strict paths byte-identical (unit-pinned as the N-1 leg); REJECTED shapes recorded in ADR-0031 Amendment II so none is re-proposed: unconditional baseline-on-jump, empty-frame delivery through the window, seq rebase, cold-reattach-on-second-gap; (4) abort takes the same uniform path minus the size frame, at the old geometry; (5) the log records the presentation floor (seq after last commit/abort) and a resume-from-floor asking BELOW it is served the cold-attach shape (sync repaint + skip to live), never a raw replay across the boundary — at-least-once preserved in effect because the repaint supersedes the skipped range. NON-GRID BYTE DISPOSITION (enumerated at triage, every class ruled): tracked-by-grid state (title OSC 0/2, alt screen 47/1047/1049, DECTCEM 25, DECSTBM, pen, cursor) = SUPERSEDED by the repaint by construction, unit-pinned per class; untracked STATEFUL sequences (bracketed paste 2004, mouse 9/1000/1002/1003 + encodings 1005/1006/1015, focus 1004, DECCKM 1, DECAWM 7, keypad ESC=/ESC>, DECSCUSR, OSC color 4/10/11/12/104/110/111/112, charset designation), ONE-SHOT events (BEL, OSC 52 clipboard, OSC 9/777 notifications) and child->client QUERIES (DA1/DA2, DECRQM, XTWINOPS, OSC 10/11 '?') = DEFERRED verbatim in emission order, flushed inside the sync frame (a dropped toggle is indefinite divergence, a dropped query can hang a waiting child; a deferred one is bounded-window latency); cell-scoped decorations the grid does not carry (OSC 8 hyperlinks, DCS graphics) = DROPPED as a balanced class (content superseded by the repaint; an unbalanced deferred open would decorate unrelated post-repaint text; matches the repaint's existing fidelity boundary). DSR is in NO class: the drain strips + answers it pre-append (REQ-DSR-SINGLE-CPR); its mid-transition CPR reports the pre-transition cursor — accepted bounded residual, recorded not built-around. MECHANISM CONSTRAINT, binding: classification runs in the ONE parser authority — ScreenGrid's vte::Perform in a capture mode during held-byte replay, re-encoding unconsumed sequences from callback parameters; NEVER a second scanner over raw bytes (two parsers = two truths about sequence boundaries). SIDE EFFECT, must be recorded when built: the commit-time sync frame IS the seeded 'push a fresh repaint to transition-era attachers' follow-up — the cold-attach-during-transition residual's 'not bounded in VISIBILITY' caveat dies (the stale window now ends at commit); update the KNOWN ACCEPTED RESIDUAL text at repaint_initial and in REQ-RC-RESIZE-GEOMETRY-EPOCH accordingly. RESIZE_HOLD_CAP overflow now also means suppressed-never-delivered bytes: the sync repaint after a partial parse leaves client and grid sharing the same self-healing partial view — strictly more consistent than shipped; keep the overflow loud. BINDING CONSTRAINTS CARRIED FORWARD from the predecessor: NO whitespace special-casing, NO extra clears (one geometry authority for placement AND erasure — a fix that passes by clearing harder fails gate); fixture rules verbatim (readable prose, repeated words, every cell incl. expected-blank interiors, full-row untrimmed equality, no reflow-crossing at the resize instant). FENCED SEPARATE, do not build in this wave: the heuristic epoch-split strengthening (mark_resize_issued precedes session.resize; the 20ms-quiet/250ms-cap split is a heuristic, RESIZE_SETTLE_CAP admits old-geometry bytes may land in the new epoch) — only if the field stays red after the fanout repair. Gate: doc — ADR-0031 Amendment II states the presentation contract incl. the byte-class disposition table; impl — suppression + commit-time sync frame + watermark cursor advance + presentation floor in OutputLog/append/commit_resize/abort_resize; unit — per-class disposition pins (a title change, cursor-visibility toggle, DECSTBM change, alt-screen switch, AND a bracketed-paste/mouse toggle inside the suppressed window each surface in or after the sync frame; a hyperlink pair does not), the watermark advance (a resumed controller never re-receives a suppressed seq), the eviction-deadline exemption, the abort path, AND the wire-flag matrix (flagged-forward accepted + baselined on both dedup paths; flagged-backward dedup-dropped unchanged; unflagged-forward strict reject-gap byte-for-byte; old-broker wire without the key defaults false and a cold attach still baselines via baseline_next_output); int — the REAL live controller writer driven across a transition: an attached controller whose socket feed is parsed by an independent terminal authority at the CLIENT TARGET geometry, full untrimmed row equality every row after the sync frame, every cell incl. blanks; a viewer leg asserting size-frame-before-sync-frame and zero raw frames between commit and sync; a resume-across-resize leg (controller detaches pre-resize, resumes post-commit, receives zero mixed-geometry raw bytes and lands exact at target geometry). The cold-attach oracle is insufficient by construction and does not satisfy the int stage.",
2026-07-26T22:33:03.2217771Z       "requiredStages": [
2026-07-26T22:33:03.2217925Z         "doc",
2026-07-26T22:33:03.2218019Z         "impl",
2026-07-26T22:33:03.2218105Z         "unit",
2026-07-26T22:33:03.2218192Z         "int"
2026-07-26T22:33:03.2218278Z       ],
2026-07-26T22:33:03.2218367Z       "stages": {
2026-07-26T22:33:03.2218449Z         "doc": {
2026-07-26T22:33:03.2218540Z           "complete": true,
2026-07-26T22:33:03.2218621Z           "evidence": [
2026-07-26T22:33:03.2218706Z             {
2026-07-26T22:33:03.2218891Z               "path": "docs/adr/0031-server-side-screen-grid-render-repaint.md",
2026-07-26T22:33:03.2219056Z               "line": 89
2026-07-26T22:33:03.2219136Z             }
2026-07-26T22:33:03.2219223Z           ]
2026-07-26T22:33:03.2219304Z         },
2026-07-26T22:33:03.2219399Z         "impl": {
2026-07-26T22:33:03.2219489Z           "complete": true,
2026-07-26T22:33:03.2219689Z           "evidence": [
2026-07-26T22:33:03.2219775Z             {
2026-07-26T22:33:03.2219900Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.2220000Z               "line": 841
2026-07-26T22:33:03.2220080Z             },
2026-07-26T22:33:03.2220158Z             {
2026-07-26T22:33:03.2220276Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2220357Z               "line": 729
2026-07-26T22:33:03.2220453Z             },
2026-07-26T22:33:03.2220534Z             {
2026-07-26T22:33:03.2220653Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2220734Z               "line": 1174
2026-07-26T22:33:03.2220825Z             },
2026-07-26T22:33:03.2220910Z             {
2026-07-26T22:33:03.2221024Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2221102Z               "line": 1303
2026-07-26T22:33:03.2221192Z             },
2026-07-26T22:33:03.2221263Z             {
2026-07-26T22:33:03.2221379Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2221469Z               "line": 1973
2026-07-26T22:33:03.2221572Z             },
2026-07-26T22:33:03.2221677Z             {
2026-07-26T22:33:03.2221859Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2221986Z               "line": 2006
2026-07-26T22:33:03.2222083Z             },
2026-07-26T22:33:03.2222155Z             {
2026-07-26T22:33:03.2222273Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2222354Z               "line": 2054
2026-07-26T22:33:03.2222431Z             },
2026-07-26T22:33:03.2222545Z             {
2026-07-26T22:33:03.2222659Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2222746Z               "line": 2097
2026-07-26T22:33:03.2222817Z             },
2026-07-26T22:33:03.2222898Z             {
2026-07-26T22:33:03.2223013Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2223104Z               "line": 2691
2026-07-26T22:33:03.2223208Z             },
2026-07-26T22:33:03.2223308Z             {
2026-07-26T22:33:03.2223437Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.2223532Z               "line": 1233
2026-07-26T22:33:03.2223613Z             },
2026-07-26T22:33:03.2223700Z             {
2026-07-26T22:33:03.2223817Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2223903Z               "line": 255
2026-07-26T22:33:03.2223979Z             },
2026-07-26T22:33:03.2224060Z             {
2026-07-26T22:33:03.2224172Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2224282Z               "line": 848
2026-07-26T22:33:03.2224382Z             },
2026-07-26T22:33:03.2224473Z             {
2026-07-26T22:33:03.2224582Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2224679Z               "line": 863
2026-07-26T22:33:03.2224764Z             },
2026-07-26T22:33:03.2224849Z             {
2026-07-26T22:33:03.2224965Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2225064Z               "line": 902
2026-07-26T22:33:03.2225144Z             },
2026-07-26T22:33:03.2225364Z             {
2026-07-26T22:33:03.2225469Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2225565Z               "line": 920
2026-07-26T22:33:03.2225647Z             },
2026-07-26T22:33:03.2225727Z             {
2026-07-26T22:33:03.2225836Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2225933Z               "line": 1137
2026-07-26T22:33:03.2226017Z             },
2026-07-26T22:33:03.2226103Z             {
2026-07-26T22:33:03.2226205Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2226314Z               "line": 1201
2026-07-26T22:33:03.2226394Z             },
2026-07-26T22:33:03.2226481Z             {
2026-07-26T22:33:03.2226586Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2226671Z               "line": 1230
2026-07-26T22:33:03.2226932Z             },
2026-07-26T22:33:03.2227016Z             {
2026-07-26T22:33:03.2227134Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2227231Z               "line": 1246
2026-07-26T22:33:03.2227321Z             },
2026-07-26T22:33:03.2227401Z             {
2026-07-26T22:33:03.2227512Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2227597Z               "line": 1269
2026-07-26T22:33:03.2227683Z             },
2026-07-26T22:33:03.2227759Z             {
2026-07-26T22:33:03.2227875Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2227960Z               "line": 1308
2026-07-26T22:33:03.2228050Z             }
2026-07-26T22:33:03.2228136Z           ]
2026-07-26T22:33:03.2228222Z         },
2026-07-26T22:33:03.2228308Z         "int": {
2026-07-26T22:33:03.2228407Z           "complete": true,
2026-07-26T22:33:03.2228495Z           "evidence": [
2026-07-26T22:33:03.2228584Z             {
2026-07-26T22:33:03.2228762Z               "path": "crates/spt-daemon/tests/resize_presentation_barrier.rs",
2026-07-26T22:33:03.2228857Z               "line": 243
2026-07-26T22:33:03.2228932Z             },
2026-07-26T22:33:03.2229100Z             {
2026-07-26T22:33:03.2229266Z               "path": "crates/spt-daemon/tests/resize_presentation_barrier.rs",
2026-07-26T22:33:03.2229365Z               "line": 356
2026-07-26T22:33:03.2229442Z             }
2026-07-26T22:33:03.2229521Z           ]
2026-07-26T22:33:03.2229597Z         },
2026-07-26T22:33:03.2229686Z         "unit": {
2026-07-26T22:33:03.2229769Z           "complete": true,
2026-07-26T22:33:03.2229869Z           "evidence": [
2026-07-26T22:33:03.2229954Z             {
2026-07-26T22:33:03.2230074Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.2230155Z               "line": 2344
2026-07-26T22:33:03.2230245Z             },
2026-07-26T22:33:03.2230316Z             {
2026-07-26T22:33:03.2230441Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.2230526Z               "line": 2422
2026-07-26T22:33:03.2230617Z             },
2026-07-26T22:33:03.2230689Z             {
2026-07-26T22:33:03.2230822Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2230907Z               "line": 7170
2026-07-26T22:33:03.2230994Z             },
2026-07-26T22:33:03.2231080Z             {
2026-07-26T22:33:03.2231189Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2231289Z               "line": 7267
2026-07-26T22:33:03.2231367Z             },
2026-07-26T22:33:03.2231456Z             {
2026-07-26T22:33:03.2231571Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2231667Z               "line": 7330
2026-07-26T22:33:03.2231747Z             },
2026-07-26T22:33:03.2231828Z             {
2026-07-26T22:33:03.2231944Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2232029Z               "line": 7366
2026-07-26T22:33:03.2232114Z             },
2026-07-26T22:33:03.2232208Z             {
2026-07-26T22:33:03.2232328Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2232523Z               "line": 7389
2026-07-26T22:33:03.2232599Z             },
2026-07-26T22:33:03.2232681Z             {
2026-07-26T22:33:03.2232795Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2232890Z               "line": 7420
2026-07-26T22:33:03.2232977Z             },
2026-07-26T22:33:03.2233067Z             {
2026-07-26T22:33:03.2233176Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2233263Z               "line": 7485
2026-07-26T22:33:03.2233344Z             },
2026-07-26T22:33:03.2233425Z             {
2026-07-26T22:33:03.2233539Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2233630Z               "line": 7525
2026-07-26T22:33:03.2233715Z             },
2026-07-26T22:33:03.2233806Z             {
2026-07-26T22:33:03.2233917Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2234106Z               "line": 7579
2026-07-26T22:33:03.2234183Z             },
2026-07-26T22:33:03.2234279Z             {
2026-07-26T22:33:03.2234410Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.2234505Z               "line": 1638
2026-07-26T22:33:03.2234582Z             },
2026-07-26T22:33:03.2234657Z             {
2026-07-26T22:33:03.2234770Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2234880Z               "line": 1658
2026-07-26T22:33:03.2234967Z             },
2026-07-26T22:33:03.2235052Z             {
2026-07-26T22:33:03.2235156Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2235253Z               "line": 1692
2026-07-26T22:33:03.2235338Z             },
2026-07-26T22:33:03.2235423Z             {
2026-07-26T22:33:03.2235539Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2235619Z               "line": 1713
2026-07-26T22:33:03.2235700Z             },
2026-07-26T22:33:03.2235786Z             {
2026-07-26T22:33:03.2235892Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2235987Z               "line": 1732
2026-07-26T22:33:03.2236072Z             },
2026-07-26T22:33:03.2236145Z             {
2026-07-26T22:33:03.2236287Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2236377Z               "line": 1748
2026-07-26T22:33:03.2236455Z             },
2026-07-26T22:33:03.2236540Z             {
2026-07-26T22:33:03.2236654Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2236740Z               "line": 1765
2026-07-26T22:33:03.2236822Z             },
2026-07-26T22:33:03.2236907Z             {
2026-07-26T22:33:03.2237021Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2237108Z               "line": 1777
2026-07-26T22:33:03.2237208Z             }
2026-07-26T22:33:03.2237287Z           ]
2026-07-26T22:33:03.2237368Z         }
2026-07-26T22:33:03.2237459Z       }
2026-07-26T22:33:03.2237539Z     },
2026-07-26T22:33:03.2237618Z     {
2026-07-26T22:33:03.2237743Z       "id": "REQ-RC-SINGLE-PUMP-BRAIN",
2026-07-26T22:33:03.2241631Z       "title": "RC-RENDER-TRUTH v0.38.1 fast-follow leg 2 (hertz v0.38.0 field repro 2, hertz RCA confirmed + doyle-accepted): plain `spt rc` constructs EXACTLY ONE pump Brain — the W1 truth probe (SessionProbe::connect, rc.rs ~1388/981-987, KIND_SESSIONS then drop) and establish_attach (~1464/1632) each build a real pump Brain today = two transient IPC reader threads/conns + a doubled user-visible 'PUMP_IPC_READER: spawned' banner per invocation (brain.rs:254 emits once per BrainConn::split_with_reader via cold_start_pump — the log site is NOT duplicated). FIX (hertz seam, ratified): carry the SessionProbe's Brain INTO establish_attach and re-query sessions on that same conn for freshness — do NOT suppress the log line and do NOT switch to Whole (the banner is truthful; the double construction is the defect). Qualified/session-confirmed paths (which skip the probe) and the reconnect loop (one fresh pump per attempt, correct) unchanged. Gate: impl — probe-Brain carry + same-conn freshness re-query; unit — probe-then-establish reuses the conn (construction-count observable); int — rc_attach_truth offline_row_over_live_session_attaches extended: capture stderr, assert PUMP_IPC_READER spawned count == 1 PLUS existing behavior assertions; doc — none (internal seam).",
2026-07-26T22:33:03.2241840Z       "requiredStages": [
2026-07-26T22:33:03.2241922Z         "impl",
2026-07-26T22:33:03.2242011Z         "unit",
2026-07-26T22:33:03.2242093Z         "int"
2026-07-26T22:33:03.2242174Z       ],
2026-07-26T22:33:03.2242252Z       "stages": {
2026-07-26T22:33:03.2242340Z         "doc": {
2026-07-26T22:33:03.2242431Z           "complete": false,
2026-07-26T22:33:03.2242527Z           "evidence": []
2026-07-26T22:33:03.2242604Z         },
2026-07-26T22:33:03.2242688Z         "impl": {
2026-07-26T22:33:03.2242777Z           "complete": true,
2026-07-26T22:33:03.2243041Z           "evidence": [
2026-07-26T22:33:03.2243116Z             {
2026-07-26T22:33:03.2243237Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2243332Z               "line": 1014
2026-07-26T22:33:03.2243417Z             },
2026-07-26T22:33:03.2243499Z             {
2026-07-26T22:33:03.2243608Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2243684Z               "line": 1722
2026-07-26T22:33:03.2243765Z             }
2026-07-26T22:33:03.2243838Z           ]
2026-07-26T22:33:03.2243923Z         },
2026-07-26T22:33:03.2244004Z         "int": {
2026-07-26T22:33:03.2244099Z           "complete": true,
2026-07-26T22:33:03.2244181Z           "evidence": [
2026-07-26T22:33:03.2244271Z             {
2026-07-26T22:33:03.2244385Z               "path": "crates/spt/tests/rc_attach_truth.rs",
2026-07-26T22:33:03.2244482Z               "line": 279
2026-07-26T22:33:03.2244562Z             }
2026-07-26T22:33:03.2244662Z           ]
2026-07-26T22:33:03.2244743Z         },
2026-07-26T22:33:03.2244844Z         "unit": {
2026-07-26T22:33:03.2244928Z           "complete": true,
2026-07-26T22:33:03.2245023Z           "evidence": [
2026-07-26T22:33:03.2245119Z             {
2026-07-26T22:33:03.2245217Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2245311Z               "line": 3006
2026-07-26T22:33:03.2245392Z             }
2026-07-26T22:33:03.2245474Z           ]
2026-07-26T22:33:03.2245556Z         }
2026-07-26T22:33:03.2245635Z       }
2026-07-26T22:33:03.2245716Z     },
2026-07-26T22:33:03.2245799Z     {
2026-07-26T22:33:03.2245898Z       "id": "REQ-RC-VT-TEARDOWN",
2026-07-26T22:33:03.2249295Z       "title": "RC-RENDER-TRUTH W3 (ADR-0043 decision 2, hertz stale-glyphs RCA leg 2 P0): rc display teardown is a display RAII guard SEPARATE from the OS input/raw-mode guard, unconditional and idempotent on EVERY exit path including errors and unwind — best-effort SGR reset + full scroll-region reset + cursor show + leave alternate screen + clear/home, emitted while VT output processing is still enabled, THEN restore the prior console output mode, THEN parting prose (today RawGuard::drop restores raw/mouse/console-mode only; detach, child exit, displacement, first-event stall, fatal error, and the 30s reconnect give-up all can leave the operator terminal dirty; the reconnect banner clears+homes then give-up prints at the centered cursor). Gate: impl — split display guard + every-path coverage; unit — guard emits the cleanup postlude exactly once, idempotent on double-drop; int — dirty sink (?1049h ?25l SGR31) x every PumpEnd/error class => cleanup postlude precedes the final prose; doc — ADR-0043.",
2026-07-26T22:33:03.2249429Z       "requiredStages": [
2026-07-26T22:33:03.2249524Z         "doc",
2026-07-26T22:33:03.2249643Z         "impl",
2026-07-26T22:33:03.2249728Z         "unit",
2026-07-26T22:33:03.2249814Z         "int"
2026-07-26T22:33:03.2249896Z       ],
2026-07-26T22:33:03.2249978Z       "stages": {
2026-07-26T22:33:03.2250057Z         "doc": {
2026-07-26T22:33:03.2250163Z           "complete": true,
2026-07-26T22:33:03.2250245Z           "evidence": [
2026-07-26T22:33:03.2250330Z             {
2026-07-26T22:33:03.2250595Z               "path": "docs/adr/0043-terminal-render-lifecycle.md",
2026-07-26T22:33:03.2250688Z               "line": 51
2026-07-26T22:33:03.2250769Z             }
2026-07-26T22:33:03.2250851Z           ]
2026-07-26T22:33:03.2250932Z         },
2026-07-26T22:33:03.2251017Z         "impl": {
2026-07-26T22:33:03.2251112Z           "complete": true,
2026-07-26T22:33:03.2251194Z           "evidence": [
2026-07-26T22:33:03.2251275Z             {
2026-07-26T22:33:03.2251379Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2251470Z               "line": 889
2026-07-26T22:33:03.2251562Z             },
2026-07-26T22:33:03.2251638Z             {
2026-07-26T22:33:03.2251746Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2251829Z               "line": 902
2026-07-26T22:33:03.2251909Z             },
2026-07-26T22:33:03.2252104Z             {
2026-07-26T22:33:03.2252210Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2252300Z               "line": 1574
2026-07-26T22:33:03.2252391Z             },
2026-07-26T22:33:03.2252477Z             {
2026-07-26T22:33:03.2252571Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2252667Z               "line": 1629
2026-07-26T22:33:03.2252749Z             }
2026-07-26T22:33:03.2252840Z           ]
2026-07-26T22:33:03.2252919Z         },
2026-07-26T22:33:03.2252996Z         "int": {
2026-07-26T22:33:03.2253078Z           "complete": true,
2026-07-26T22:33:03.2253178Z           "evidence": [
2026-07-26T22:33:03.2253252Z             {
2026-07-26T22:33:03.2253352Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2253444Z               "line": 2571
2026-07-26T22:33:03.2253530Z             }
2026-07-26T22:33:03.2253610Z           ]
2026-07-26T22:33:03.2253700Z         },
2026-07-26T22:33:03.2253787Z         "unit": {
2026-07-26T22:33:03.2253896Z           "complete": true,
2026-07-26T22:33:03.2253977Z           "evidence": [
2026-07-26T22:33:03.2254059Z             {
2026-07-26T22:33:03.2254159Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2254258Z               "line": 2554
2026-07-26T22:33:03.2254340Z             }
2026-07-26T22:33:03.2254417Z           ]
2026-07-26T22:33:03.2254497Z         }
2026-07-26T22:33:03.2254578Z       }
2026-07-26T22:33:03.2254654Z     },
2026-07-26T22:33:03.2254741Z     {
2026-07-26T22:33:03.2254845Z       "id": "REQ-RC-WIN-PASTE",
2026-07-26T22:33:03.2259598Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-07-26T22:33:03.2259827Z       "requiredStages": [
2026-07-26T22:33:03.2259926Z         "doc",
2026-07-26T22:33:03.2260012Z         "impl",
2026-07-26T22:33:03.2260088Z         "unit"
2026-07-26T22:33:03.2260170Z       ],
2026-07-26T22:33:03.2260260Z       "stages": {
2026-07-26T22:33:03.2260350Z         "doc": {
2026-07-26T22:33:03.2260437Z           "complete": true,
2026-07-26T22:33:03.2260528Z           "evidence": [
2026-07-26T22:33:03.2260603Z             {
2026-07-26T22:33:03.2260723Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.2260805Z               "line": 484
2026-07-26T22:33:03.2260885Z             }
2026-07-26T22:33:03.2260969Z           ]
2026-07-26T22:33:03.2261050Z         },
2026-07-26T22:33:03.2261136Z         "impl": {
2026-07-26T22:33:03.2261235Z           "complete": true,
2026-07-26T22:33:03.2261420Z           "evidence": [
2026-07-26T22:33:03.2261511Z             {
2026-07-26T22:33:03.2261610Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2261715Z               "line": 655
2026-07-26T22:33:03.2261793Z             },
2026-07-26T22:33:03.2261879Z             {
2026-07-26T22:33:03.2261982Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2262079Z               "line": 671
2026-07-26T22:33:03.2262150Z             },
2026-07-26T22:33:03.2262245Z             {
2026-07-26T22:33:03.2262335Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2262432Z               "line": 714
2026-07-26T22:33:03.2262516Z             },
2026-07-26T22:33:03.2262597Z             {
2026-07-26T22:33:03.2262699Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2262789Z               "line": 728
2026-07-26T22:33:03.2262875Z             },
2026-07-26T22:33:03.2262956Z             {
2026-07-26T22:33:03.2263061Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2263160Z               "line": 739
2026-07-26T22:33:03.2263241Z             }
2026-07-26T22:33:03.2263329Z           ]
2026-07-26T22:33:03.2263410Z         },
2026-07-26T22:33:03.2263493Z         "int": {
2026-07-26T22:33:03.2263590Z           "complete": false,
2026-07-26T22:33:03.2263686Z           "evidence": []
2026-07-26T22:33:03.2263771Z         },
2026-07-26T22:33:03.2263870Z         "unit": {
2026-07-26T22:33:03.2263961Z           "complete": true,
2026-07-26T22:33:03.2264052Z           "evidence": [
2026-07-26T22:33:03.2264137Z             {
2026-07-26T22:33:03.2264236Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2264323Z               "line": 3868
2026-07-26T22:33:03.2264414Z             },
2026-07-26T22:33:03.2264489Z             {
2026-07-26T22:33:03.2264600Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2264681Z               "line": 3889
2026-07-26T22:33:03.2264771Z             },
2026-07-26T22:33:03.2264852Z             {
2026-07-26T22:33:03.2264963Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2265062Z               "line": 3910
2026-07-26T22:33:03.2265138Z             }
2026-07-26T22:33:03.2265224Z           ]
2026-07-26T22:33:03.2265306Z         }
2026-07-26T22:33:03.2265386Z       }
2026-07-26T22:33:03.2265467Z     },
2026-07-26T22:33:03.2265549Z     {
2026-07-26T22:33:03.2265654Z       "id": "REQ-RC-WIN-VT-OUTPUT",
2026-07-26T22:33:03.2269163Z       "title": "Bug #12: `spt rc` to an endpoint renders ANSI escapes LITERALLY (raw ←[K / color codes) on a Win10 conhost console, garbling the viewport — while `endpoint run --attach` in the SAME env renders fine and Win11 Windows Terminal is unaffected. Root (code-grounded, doyle): rc.rs RawGuard::enable calls only crossterm enable_raw_mode (INPUT raw mode) and NEVER enables ENABLE_VIRTUAL_TERMINAL_PROCESSING on the OUTPUT handle; Win10 conhost defaults VT-output OFF so escapes print literally, whereas the picker/alt-screen setup on the endpoint-run path enters crossterm's VT-enabling console setup first (leaving VT-output on) — so it is the rc-attach CLIENT PATH specifically, and --attach-works-same-env confirms (not refutes) the VT-out theory. Fix: in the rc attach path (RawGuard), on cfg(windows) + interactive console (mirror the windows_mouse_wanted guard so piped stdin/stdout keeps clean bytes for the e2e byte tests), SetConsoleMode STD_OUTPUT_HANDLE |= ENABLE_VIRTUAL_TERMINAL_PROCESSING|ENABLE_PROCESSED_OUTPUT, capture the prior mode, restore on Drop. cfg(windows)-only, client-side, independent of #4/#6. See docs/NEXT-MILESTONE-BUG-TRIAGE.md #12.",
2026-07-26T22:33:03.2269389Z       "requiredStages": [
2026-07-26T22:33:03.2269471Z         "impl",
2026-07-26T22:33:03.2269552Z         "unit"
2026-07-26T22:33:03.2269632Z       ],
2026-07-26T22:33:03.2269713Z       "stages": {
2026-07-26T22:33:03.2269800Z         "doc": {
2026-07-26T22:33:03.2269900Z           "complete": false,
2026-07-26T22:33:03.2269980Z           "evidence": []
2026-07-26T22:33:03.2270068Z         },
2026-07-26T22:33:03.2270252Z         "impl": {
2026-07-26T22:33:03.2270353Z           "complete": true,
2026-07-26T22:33:03.2270434Z           "evidence": [
2026-07-26T22:33:03.2270524Z             {
2026-07-26T22:33:03.2270634Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2270707Z               "line": 763
2026-07-26T22:33:03.2270797Z             },
2026-07-26T22:33:03.2270877Z             {
2026-07-26T22:33:03.2270983Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2271064Z               "line": 780
2026-07-26T22:33:03.2271149Z             },
2026-07-26T22:33:03.2271230Z             {
2026-07-26T22:33:03.2271332Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2271422Z               "line": 804
2026-07-26T22:33:03.2271515Z             }
2026-07-26T22:33:03.2271596Z           ]
2026-07-26T22:33:03.2271682Z         },
2026-07-26T22:33:03.2271753Z         "int": {
2026-07-26T22:33:03.2271851Z           "complete": false,
2026-07-26T22:33:03.2271941Z           "evidence": []
2026-07-26T22:33:03.2272038Z         },
2026-07-26T22:33:03.2272124Z         "unit": {
2026-07-26T22:33:03.2272223Z           "complete": true,
2026-07-26T22:33:03.2272319Z           "evidence": [
2026-07-26T22:33:03.2272400Z             {
2026-07-26T22:33:03.2272499Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2272595Z               "line": 2640
2026-07-26T22:33:03.2272672Z             }
2026-07-26T22:33:03.2272758Z           ]
2026-07-26T22:33:03.2272842Z         }
2026-07-26T22:33:03.2272930Z       }
2026-07-26T22:33:03.2273011Z     },
2026-07-26T22:33:03.2273101Z     {
2026-07-26T22:33:03.2273191Z       "id": "REQ-RCVIEW-1",
2026-07-26T22:33:03.2277593Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-07-26T22:33:03.2277813Z       "requiredStages": [
2026-07-26T22:33:03.2277902Z         "doc",
2026-07-26T22:33:03.2277988Z         "impl",
2026-07-26T22:33:03.2278066Z         "unit",
2026-07-26T22:33:03.2278151Z         "int"
2026-07-26T22:33:03.2278236Z       ],
2026-07-26T22:33:03.2278322Z       "stages": {
2026-07-26T22:33:03.2278414Z         "doc": {
2026-07-26T22:33:03.2278508Z           "complete": true,
2026-07-26T22:33:03.2278604Z           "evidence": [
2026-07-26T22:33:03.2278695Z             {
2026-07-26T22:33:03.2278790Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.2278870Z               "line": 397
2026-07-26T22:33:03.2279039Z             }
2026-07-26T22:33:03.2279119Z           ]
2026-07-26T22:33:03.2279199Z         },
2026-07-26T22:33:03.2279286Z         "impl": {
2026-07-26T22:33:03.2279378Z           "complete": true,
2026-07-26T22:33:03.2279632Z           "evidence": [
2026-07-26T22:33:03.2279709Z             {
2026-07-26T22:33:03.2279840Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:03.2279940Z               "line": 698
2026-07-26T22:33:03.2280036Z             },
2026-07-26T22:33:03.2280117Z             {
2026-07-26T22:33:03.2280240Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2280322Z               "line": 2241
2026-07-26T22:33:03.2280408Z             },
2026-07-26T22:33:03.2280493Z             {
2026-07-26T22:33:03.2280613Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2280699Z               "line": 2257
2026-07-26T22:33:03.2280784Z             },
2026-07-26T22:33:03.2280860Z             {
2026-07-26T22:33:03.2280985Z               "path": "crates/spt-net/src/net/attach.rs",
2026-07-26T22:33:03.2281070Z               "line": 41
2026-07-26T22:33:03.2281194Z             },
2026-07-26T22:33:03.2281309Z             {
2026-07-26T22:33:03.2281437Z               "path": "crates/spt-net/src/net/attach.rs",
2026-07-26T22:33:03.2281518Z               "line": 68
2026-07-26T22:33:03.2281619Z             },
2026-07-26T22:33:03.2281700Z             {
2026-07-26T22:33:03.2281819Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.2281906Z               "line": 501
2026-07-26T22:33:03.2281996Z             },
2026-07-26T22:33:03.2282076Z             {
2026-07-26T22:33:03.2282175Z               "path": "crates/spt/src/rc.rs",
2026-07-26T22:33:03.2282266Z               "line": 1388
2026-07-26T22:33:03.2282355Z             }
2026-07-26T22:33:03.2282444Z           ]
2026-07-26T22:33:03.2282521Z         },
2026-07-26T22:33:03.2282603Z         "int": {
2026-07-26T22:33:03.2282703Z           "complete": true,
2026-07-26T22:33:03.2282778Z           "evidence": [
2026-07-26T22:33:03.2282875Z             {
2026-07-26T22:33:03.2282994Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:03.2283107Z               "line": 1070
2026-07-26T22:33:03.2283185Z             },
2026-07-26T22:33:03.2283270Z             {
2026-07-26T22:33:03.2283389Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:03.2283490Z               "line": 1110
2026-07-26T22:33:03.2283575Z             },
2026-07-26T22:33:03.2283666Z             {
2026-07-26T22:33:03.2283785Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:03.2283876Z               "line": 1157
2026-07-26T22:33:03.2283956Z             },
2026-07-26T22:33:03.2284032Z             {
2026-07-26T22:33:03.2284153Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:03.2284233Z               "line": 1309
2026-07-26T22:33:03.2284319Z             }
2026-07-26T22:33:03.2284400Z           ]
2026-07-26T22:33:03.2284482Z         },
2026-07-26T22:33:03.2284562Z         "unit": {
2026-07-26T22:33:03.2284658Z           "complete": true,
2026-07-26T22:33:03.2284744Z           "evidence": [
2026-07-26T22:33:03.2284840Z             {
2026-07-26T22:33:03.2284957Z               "path": "crates/spt-net/src/net/attach.rs",
2026-07-26T22:33:03.2285047Z               "line": 204
2026-07-26T22:33:03.2285230Z             },
2026-07-26T22:33:03.2285323Z             {
2026-07-26T22:33:03.2285429Z               "path": "crates/spt-net/src/net/attach.rs",
2026-07-26T22:33:03.2285524Z               "line": 262
2026-07-26T22:33:03.2285667Z             }
2026-07-26T22:33:03.2285754Z           ]
2026-07-26T22:33:03.2285834Z         }
2026-07-26T22:33:03.2285911Z       }
2026-07-26T22:33:03.2285991Z     },
2026-07-26T22:33:03.2286068Z     {
2026-07-26T22:33:03.2286163Z       "id": "REQ-REACH-1",
2026-07-26T22:33:03.2286316Z       "title": "Off-node remote-drive detection + file transfer",
2026-07-26T22:33:03.2286402Z       "requiredStages": [
2026-07-26T22:33:03.2286492Z         "impl",
2026-07-26T22:33:03.2286578Z         "unit",
2026-07-26T22:33:03.2286664Z         "int"
2026-07-26T22:33:03.2286741Z       ],
2026-07-26T22:33:03.2286930Z       "stages": {
2026-07-26T22:33:03.2287008Z         "doc": {
2026-07-26T22:33:03.2287113Z           "complete": false,
2026-07-26T22:33:03.2287211Z           "evidence": []
2026-07-26T22:33:03.2287291Z         },
2026-07-26T22:33:03.2287368Z         "impl": {
2026-07-26T22:33:03.2287467Z           "complete": true,
2026-07-26T22:33:03.2287547Z           "evidence": [
2026-07-26T22:33:03.2287633Z             {
2026-07-26T22:33:03.2287748Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2287843Z               "line": 2241
2026-07-26T22:33:03.2287928Z             },
2026-07-26T22:33:03.2288015Z             {
2026-07-26T22:33:03.2288129Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-07-26T22:33:03.2288224Z               "line": 77
2026-07-26T22:33:03.2288311Z             },
2026-07-26T22:33:03.2288396Z             {
2026-07-26T22:33:03.2288515Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-07-26T22:33:03.2288606Z               "line": 223
2026-07-26T22:33:03.2288697Z             },
2026-07-26T22:33:03.2288778Z             {
2026-07-26T22:33:03.2288887Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-07-26T22:33:03.2289049Z               "line": 423
2026-07-26T22:33:03.2289140Z             },
2026-07-26T22:33:03.2289216Z             {
2026-07-26T22:33:03.2289340Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-07-26T22:33:03.2289426Z               "line": 530
2026-07-26T22:33:03.2289507Z             },
2026-07-26T22:33:03.2289589Z             {
2026-07-26T22:33:03.2289711Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-07-26T22:33:03.2289798Z               "line": 39
2026-07-26T22:33:03.2289885Z             },
2026-07-26T22:33:03.2289970Z             {
2026-07-26T22:33:03.2290078Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.2290163Z               "line": 469
2026-07-26T22:33:03.2290250Z             },
2026-07-26T22:33:03.2290329Z             {
2026-07-26T22:33:03.2290447Z               "path": "crates/spt-store/src/xfer.rs",
2026-07-26T22:33:03.2290533Z               "line": 88
2026-07-26T22:33:03.2290611Z             },
2026-07-26T22:33:03.2290691Z             {
2026-07-26T22:33:03.2290810Z               "path": "crates/spt-store/src/xfer.rs",
2026-07-26T22:33:03.2290892Z               "line": 98
2026-07-26T22:33:03.2290973Z             },
2026-07-26T22:33:03.2291048Z             {
2026-07-26T22:33:03.2291178Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.2291254Z               "line": 337
2026-07-26T22:33:03.2291344Z             }
2026-07-26T22:33:03.2291429Z           ]
2026-07-26T22:33:03.2291507Z         },
2026-07-26T22:33:03.2291592Z         "int": {
2026-07-26T22:33:03.2291692Z           "complete": true,
2026-07-26T22:33:03.2291768Z           "evidence": [
2026-07-26T22:33:03.2291851Z             {
2026-07-26T22:33:03.2291978Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-07-26T22:33:03.2292064Z               "line": 422
2026-07-26T22:33:03.2292151Z             },
2026-07-26T22:33:03.2296137Z             {
2026-07-26T22:33:03.2296295Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-07-26T22:33:03.2296585Z               "line": 666
2026-07-26T22:33:03.2296657Z             },
2026-07-26T22:33:03.2296737Z             {
2026-07-26T22:33:03.2296866Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.2296962Z               "line": 1153
2026-07-26T22:33:03.2297048Z             },
2026-07-26T22:33:03.2297138Z             {
2026-07-26T22:33:03.2297263Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.2297372Z               "line": 1663
2026-07-26T22:33:03.2297467Z             }
2026-07-26T22:33:03.2297583Z           ]
2026-07-26T22:33:03.2297673Z         },
2026-07-26T22:33:03.2297752Z         "unit": {
2026-07-26T22:33:03.2297847Z           "complete": true,
2026-07-26T22:33:03.2297933Z           "evidence": [
2026-07-26T22:33:03.2298027Z             {
2026-07-26T22:33:03.2298370Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-07-26T22:33:03.2298465Z               "line": 640
2026-07-26T22:33:03.2298560Z             },
2026-07-26T22:33:03.2298637Z             {
2026-07-26T22:33:03.2298741Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-07-26T22:33:03.2298832Z               "line": 661
2026-07-26T22:33:03.2298910Z             },
2026-07-26T22:33:03.2299080Z             {
2026-07-26T22:33:03.2299191Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-07-26T22:33:03.2299285Z               "line": 925
2026-07-26T22:33:03.2299366Z             },
2026-07-26T22:33:03.2299447Z             {
2026-07-26T22:33:03.2299567Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-07-26T22:33:03.2299662Z               "line": 94
2026-07-26T22:33:03.2299738Z             },
2026-07-26T22:33:03.2299830Z             {
2026-07-26T22:33:03.2299938Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-07-26T22:33:03.2300033Z               "line": 225
2026-07-26T22:33:03.2300126Z             },
2026-07-26T22:33:03.2300239Z             {
2026-07-26T22:33:03.2300363Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-07-26T22:33:03.2300454Z               "line": 96
2026-07-26T22:33:03.2300526Z             },
2026-07-26T22:33:03.2300605Z             {
2026-07-26T22:33:03.2300709Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-07-26T22:33:03.2300805Z               "line": 146
2026-07-26T22:33:03.2300899Z             },
2026-07-26T22:33:03.2300989Z             {
2026-07-26T22:33:03.2301108Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.2301223Z               "line": 1193
2026-07-26T22:33:03.2301308Z             },
2026-07-26T22:33:03.2301409Z             {
2026-07-26T22:33:03.2301518Z               "path": "crates/spt-store/src/xfer.rs",
2026-07-26T22:33:03.2301613Z               "line": 118
2026-07-26T22:33:03.2301694Z             },
2026-07-26T22:33:03.2301781Z             {
2026-07-26T22:33:03.2301895Z               "path": "crates/spt-store/src/xfer.rs",
2026-07-26T22:33:03.2301976Z               "line": 148
2026-07-26T22:33:03.2302057Z             },
2026-07-26T22:33:03.2302134Z             {
2026-07-26T22:33:03.2302271Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.2302363Z               "line": 1569
2026-07-26T22:33:03.2302458Z             }
2026-07-26T22:33:03.2302538Z           ]
2026-07-26T22:33:03.2302620Z         }
2026-07-26T22:33:03.2302697Z       }
2026-07-26T22:33:03.2302810Z     },
2026-07-26T22:33:03.2302906Z     {
2026-07-26T22:33:03.2303016Z       "id": "REQ-REACH-2",
2026-07-26T22:33:03.2303167Z       "title": "Remote command execution (deferred, consent-gated)",
2026-07-26T22:33:03.2303286Z       "requiredStages": [],
2026-07-26T22:33:03.2303382Z       "stages": {
2026-07-26T22:33:03.2303489Z         "doc": {
2026-07-26T22:33:03.2303579Z           "complete": false,
2026-07-26T22:33:03.2303675Z           "evidence": []
2026-07-26T22:33:03.2303761Z         },
2026-07-26T22:33:03.2303851Z         "impl": {
2026-07-26T22:33:03.2303951Z           "complete": false,
2026-07-26T22:33:03.2304043Z           "evidence": []
2026-07-26T22:33:03.2304232Z         },
2026-07-26T22:33:03.2304324Z         "int": {
2026-07-26T22:33:03.2304414Z           "complete": false,
2026-07-26T22:33:03.2304499Z           "evidence": []
2026-07-26T22:33:03.2304571Z         },
2026-07-26T22:33:03.2304658Z         "unit": {
2026-07-26T22:33:03.2304753Z           "complete": false,
2026-07-26T22:33:03.2304843Z           "evidence": []
2026-07-26T22:33:03.2304924Z         }
2026-07-26T22:33:03.2305015Z       }
2026-07-26T22:33:03.2305091Z     },
2026-07-26T22:33:03.2305176Z     {
2026-07-26T22:33:03.2305278Z       "id": "REQ-READY-AGENT-RESUME",
2026-07-26T22:33:03.2308888Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-07-26T22:33:03.2309206Z       "requiredStages": [
2026-07-26T22:33:03.2309306Z         "doc",
2026-07-26T22:33:03.2309387Z         "impl",
2026-07-26T22:33:03.2309465Z         "unit",
2026-07-26T22:33:03.2309555Z         "int"
2026-07-26T22:33:03.2309649Z       ],
2026-07-26T22:33:03.2309736Z       "stages": {
2026-07-26T22:33:03.2309817Z         "doc": {
2026-07-26T22:33:03.2309908Z           "complete": true,
2026-07-26T22:33:03.2310003Z           "evidence": [
2026-07-26T22:33:03.2310080Z             {
2026-07-26T22:33:03.2310183Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.2310264Z               "line": 437
2026-07-26T22:33:03.2310356Z             }
2026-07-26T22:33:03.2310433Z           ]
2026-07-26T22:33:03.2310517Z         },
2026-07-26T22:33:03.2310593Z         "impl": {
2026-07-26T22:33:03.2310691Z           "complete": true,
2026-07-26T22:33:03.2310767Z           "evidence": [
2026-07-26T22:33:03.2310851Z             {
2026-07-26T22:33:03.2310966Z               "path": "crates/spt-msg/src/ready.rs",
2026-07-26T22:33:03.2311063Z               "line": 117
2026-07-26T22:33:03.2311142Z             }
2026-07-26T22:33:03.2311227Z           ]
2026-07-26T22:33:03.2311303Z         },
2026-07-26T22:33:03.2311399Z         "int": {
2026-07-26T22:33:03.2311478Z           "complete": true,
2026-07-26T22:33:03.2311573Z           "evidence": [
2026-07-26T22:33:03.2311654Z             {
2026-07-26T22:33:03.2311798Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-07-26T22:33:03.2311882Z               "line": 26
2026-07-26T22:33:03.2311974Z             }
2026-07-26T22:33:03.2312055Z           ]
2026-07-26T22:33:03.2312136Z         },
2026-07-26T22:33:03.2312226Z         "unit": {
2026-07-26T22:33:03.2312322Z           "complete": true,
2026-07-26T22:33:03.2312407Z           "evidence": [
2026-07-26T22:33:03.2312492Z             {
2026-07-26T22:33:03.2312598Z               "path": "crates/spt-msg/src/ready.rs",
2026-07-26T22:33:03.2312694Z               "line": 346
2026-07-26T22:33:03.2312775Z             }
2026-07-26T22:33:03.2312855Z           ]
2026-07-26T22:33:03.2312937Z         }
2026-07-26T22:33:03.2313018Z       }
2026-07-26T22:33:03.2313103Z     },
2026-07-26T22:33:03.2313291Z     {
2026-07-26T22:33:03.2313408Z       "id": "REQ-REDISPATCH-FINISHED-RETIRE",
2026-07-26T22:33:03.2316429Z       "title": "REDISPATCH-TRUTH W1 (ADR-0038, hertz fix A): finished/terminal stream rows are RETIRED from redispatch eligibility — NetShared.streams today has NO removal path (single insert nethost.rs ~649; StreamLog::finish only marks) so every dispatcher generation re-enumerates every historical stream forever. Retire terminal rows from the enumeration the dispatcher claims from (remove, or lifecycle-exclude), preserving only the post-EOF state genuinely needed by other readers (presence/log reads); bounded growth replaces forever-discoverable rows. Clearing the whole table on brain restart is REJECTED (destroys live streams' reconstruction facts). Gate: impl — the retirement path; unit — a finished stream is invisible to the dispatch enumeration while an active one stays claimable + post-EOF reader state survives retirement; doc — rides ADR-0038 + the triage doc. Kin REQ-HAZARD-REDISPATCH-CONTROL-STEAL (the invariant it satisfies), REQ-STREAM-OPENER-DURABLE.",
2026-07-26T22:33:03.2316628Z       "requiredStages": [
2026-07-26T22:33:03.2316713Z         "doc",
2026-07-26T22:33:03.2316800Z         "impl",
2026-07-26T22:33:03.2316872Z         "unit",
2026-07-26T22:33:03.2316952Z         "int"
2026-07-26T22:33:03.2317047Z       ],
2026-07-26T22:33:03.2317129Z       "stages": {
2026-07-26T22:33:03.2317224Z         "doc": {
2026-07-26T22:33:03.2317314Z           "complete": true,
2026-07-26T22:33:03.2317405Z           "evidence": [
2026-07-26T22:33:03.2317482Z             {
2026-07-26T22:33:03.2317643Z               "path": "docs/adr/0038-broker-stream-lifecycle-truth.md",
2026-07-26T22:33:03.2317734Z               "line": 27
2026-07-26T22:33:03.2317810Z             }
2026-07-26T22:33:03.2317886Z           ]
2026-07-26T22:33:03.2317972Z         },
2026-07-26T22:33:03.2318069Z         "impl": {
2026-07-26T22:33:03.2318163Z           "complete": true,
2026-07-26T22:33:03.2318254Z           "evidence": [
2026-07-26T22:33:03.2318354Z             {
2026-07-26T22:33:03.2318478Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.2318563Z               "line": 1630
2026-07-26T22:33:03.2318650Z             },
2026-07-26T22:33:03.2318736Z             {
2026-07-26T22:33:03.2318854Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2319025Z               "line": 5831
2026-07-26T22:33:03.2319096Z             },
2026-07-26T22:33:03.2319176Z             {
2026-07-26T22:33:03.2319308Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.2319405Z               "line": 427
2026-07-26T22:33:03.2319500Z             },
2026-07-26T22:33:03.2319580Z             {
2026-07-26T22:33:03.2319700Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.2319796Z               "line": 176
2026-07-26T22:33:03.2319890Z             },
2026-07-26T22:33:03.2319972Z             {
2026-07-26T22:33:03.2320095Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2320176Z               "line": 840
2026-07-26T22:33:03.2320253Z             },
2026-07-26T22:33:03.2320335Z             {
2026-07-26T22:33:03.2320454Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2320543Z               "line": 1010
2026-07-26T22:33:03.2320630Z             },
2026-07-26T22:33:03.2320711Z             {
2026-07-26T22:33:03.2320834Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2320916Z               "line": 1932
2026-07-26T22:33:03.2320998Z             }
2026-07-26T22:33:03.2321082Z           ]
2026-07-26T22:33:03.2321163Z         },
2026-07-26T22:33:03.2321246Z         "int": {
2026-07-26T22:33:03.2321341Z           "complete": true,
2026-07-26T22:33:03.2321420Z           "evidence": [
2026-07-26T22:33:03.2321502Z             {
2026-07-26T22:33:03.2321627Z               "path": "crates/spt-daemon/tests/redispatch.rs",
2026-07-26T22:33:03.2321721Z               "line": 316
2026-07-26T22:33:03.2321916Z             },
2026-07-26T22:33:03.2322006Z             {
2026-07-26T22:33:03.2322128Z               "path": "crates/spt-daemon/tests/redispatch.rs",
2026-07-26T22:33:03.2322214Z               "line": 414
2026-07-26T22:33:03.2322295Z             }
2026-07-26T22:33:03.2322381Z           ]
2026-07-26T22:33:03.2322462Z         },
2026-07-26T22:33:03.2322553Z         "unit": {
2026-07-26T22:33:03.2322648Z           "complete": true,
2026-07-26T22:33:03.2322743Z           "evidence": [
2026-07-26T22:33:03.2322824Z             {
2026-07-26T22:33:03.2322944Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.2323025Z               "line": 1892
2026-07-26T22:33:03.2323115Z             },
2026-07-26T22:33:03.2323192Z             {
2026-07-26T22:33:03.2323310Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2323488Z               "line": 2630
2026-07-26T22:33:03.2323578Z             },
2026-07-26T22:33:03.2323658Z             {
2026-07-26T22:33:03.2323778Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2323879Z               "line": 2669
2026-07-26T22:33:03.2323963Z             },
2026-07-26T22:33:03.2324045Z             {
2026-07-26T22:33:03.2324151Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2324236Z               "line": 2715
2026-07-26T22:33:03.2324321Z             }
2026-07-26T22:33:03.2324406Z           ]
2026-07-26T22:33:03.2324492Z         }
2026-07-26T22:33:03.2324572Z       }
2026-07-26T22:33:03.2324652Z     },
2026-07-26T22:33:03.2324732Z     {
2026-07-26T22:33:03.2324853Z       "id": "REQ-REGISTRY-APPLY-TRANSACTIONAL",
2026-07-26T22:33:03.2327640Z       "title": "REGISTRY-LIFECYCLE W1 (ADR-0040 decision 3, hertz defect B leg 3): registry feed application is TRANSACTIONAL per feed — serve_registry_feed merges decoded labels + instance updates in memory across transport chunks and applies ONCE at EOF (or one bounded batch commit for oversized feeds); write_snapshots runs O(feeds), never O(chunks x record-kinds); attention-shift side effects fire once post-merge. No synchronous full-registry rewrite inside a per-chunk drain iteration (KH 7.12/7.43 discipline on the brain side — the per-chunk rewrites are what stalled IPC drain and manufactured the 15s seat-writer poisons). Gate: impl — accumulate-then-apply; unit — snapshot-write counter across a multi-chunk feed == 1 (bounded batches: == ceil(records/batch)), merge result equals per-chunk semantics, gate policy still applied per record; int — rides REQ-HAZARD-REGISTRY-STALL seam (snapshot writes O(feeds), zero poisons); doc — ADR-0040.",
2026-07-26T22:33:03.2327770Z       "requiredStages": [
2026-07-26T22:33:03.2327869Z         "doc",
2026-07-26T22:33:03.2327960Z         "impl",
2026-07-26T22:33:03.2328047Z         "unit",
2026-07-26T22:33:03.2328132Z         "int"
2026-07-26T22:33:03.2328217Z       ],
2026-07-26T22:33:03.2328304Z       "stages": {
2026-07-26T22:33:03.2328394Z         "doc": {
2026-07-26T22:33:03.2328489Z           "complete": true,
2026-07-26T22:33:03.2328590Z           "evidence": [
2026-07-26T22:33:03.2328671Z             {
2026-07-26T22:33:03.2328875Z               "path": "docs/adr/0040-bounded-stream-seat-lifecycle-one-way-terminal.md",
2026-07-26T22:33:03.2329048Z               "line": 61
2026-07-26T22:33:03.2329128Z             }
2026-07-26T22:33:03.2329210Z           ]
2026-07-26T22:33:03.2329292Z         },
2026-07-26T22:33:03.2329385Z         "impl": {
2026-07-26T22:33:03.2329470Z           "complete": true,
2026-07-26T22:33:03.2329566Z           "evidence": [
2026-07-26T22:33:03.2329642Z             {
2026-07-26T22:33:03.2329769Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.2329859Z               "line": 1161
2026-07-26T22:33:03.2329950Z             },
2026-07-26T22:33:03.2330023Z             {
2026-07-26T22:33:03.2330150Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.2330246Z               "line": 1189
2026-07-26T22:33:03.2330331Z             },
2026-07-26T22:33:03.2330517Z             {
2026-07-26T22:33:03.2330656Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.2330741Z               "line": 1250
2026-07-26T22:33:03.2330837Z             },
2026-07-26T22:33:03.2330919Z             {
2026-07-26T22:33:03.2331042Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.2331137Z               "line": 166
2026-07-26T22:33:03.2331224Z             },
2026-07-26T22:33:03.2331295Z             {
2026-07-26T22:33:03.2331418Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.2331501Z               "line": 284
2026-07-26T22:33:03.2331586Z             },
2026-07-26T22:33:03.2331666Z             {
2026-07-26T22:33:03.2331791Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.2331872Z               "line": 346
2026-07-26T22:33:03.2332043Z             },
2026-07-26T22:33:03.2332130Z             {
2026-07-26T22:33:03.2332253Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.2332352Z               "line": 409
2026-07-26T22:33:03.2332428Z             }
2026-07-26T22:33:03.2332514Z           ]
2026-07-26T22:33:03.2332594Z         },
2026-07-26T22:33:03.2332678Z         "int": {
2026-07-26T22:33:03.2332774Z           "complete": true,
2026-07-26T22:33:03.2332870Z           "evidence": [
2026-07-26T22:33:03.2332955Z             {
2026-07-26T22:33:03.2333108Z               "path": "crates/spt-daemon/tests/registry_lifecycle.rs",
2026-07-26T22:33:03.2333189Z               "line": 493
2026-07-26T22:33:03.2333270Z             }
2026-07-26T22:33:03.2333351Z           ]
2026-07-26T22:33:03.2333433Z         },
2026-07-26T22:33:03.2333509Z         "unit": {
2026-07-26T22:33:03.2333599Z           "complete": true,
2026-07-26T22:33:03.2333685Z           "evidence": [
2026-07-26T22:33:03.2333771Z             {
2026-07-26T22:33:03.2333890Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.2333980Z               "line": 1923
2026-07-26T22:33:03.2334072Z             },
2026-07-26T22:33:03.2334167Z             {
2026-07-26T22:33:03.2334290Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.2334382Z               "line": 1907
2026-07-26T22:33:03.2334463Z             }
2026-07-26T22:33:03.2334542Z           ]
2026-07-26T22:33:03.2334619Z         }
2026-07-26T22:33:03.2334706Z       }
2026-07-26T22:33:03.2334778Z     },
2026-07-26T22:33:03.2334847Z     {
2026-07-26T22:33:03.2334952Z       "id": "REQ-REGISTRY-REPLAY-BOUNDED",
2026-07-26T22:33:03.2337809Z       "title": "REGISTRY-LIFECYCLE W1 (ADR-0040 decision 4, hertz defect B leg 4, defense-in-depth behind REQ-ONEWAY-STREAM-TERMINAL): a deadline-poisoned one-way (Registry) replay carries a per-stream strike budget; at budget the row retires TERMINAL with loud telemetry (DISPATCH_EV event). Safe by family semantics: a feed is an idempotent snapshot advertisement, the next pump round (~30s) re-advertises — worst-case loss is one advertisement round, already the family freshness unit. Request/reply families keep ADR-0038 Amendment circuit-breaker semantics — terminal-at-budget is ONE-WAY-FAMILY-ONLY (never a revert toward burn-the-claim abandonment for request streams). Gate: impl — strike budget + terminal retire, one-way-scoped; unit — poison strikes accumulate per stream, budget retires terminal + emits, request/reply family unaffected by the budget path; int — poisoned registry replay stops redispatching after budget while fresh feeds keep serving.",
2026-07-26T22:33:03.2337925Z       "requiredStages": [
2026-07-26T22:33:03.2338011Z         "impl",
2026-07-26T22:33:03.2338100Z         "unit",
2026-07-26T22:33:03.2338186Z         "int"
2026-07-26T22:33:03.2338263Z       ],
2026-07-26T22:33:03.2338354Z       "stages": {
2026-07-26T22:33:03.2338444Z         "doc": {
2026-07-26T22:33:03.2338545Z           "complete": false,
2026-07-26T22:33:03.2338635Z           "evidence": []
2026-07-26T22:33:03.2338711Z         },
2026-07-26T22:33:03.2338869Z         "impl": {
2026-07-26T22:33:03.2339035Z           "complete": true,
2026-07-26T22:33:03.2339130Z           "evidence": [
2026-07-26T22:33:03.2339213Z             {
2026-07-26T22:33:03.2339355Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.2339435Z               "line": 333
2026-07-26T22:33:03.2339518Z             },
2026-07-26T22:33:03.2339598Z             {
2026-07-26T22:33:03.2339712Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.2339799Z               "line": 358
2026-07-26T22:33:03.2339885Z             },
2026-07-26T22:33:03.2339979Z             {
2026-07-26T22:33:03.2340083Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.2340179Z               "line": 665
2026-07-26T22:33:03.2340258Z             }
2026-07-26T22:33:03.2340338Z           ]
2026-07-26T22:33:03.2340515Z         },
2026-07-26T22:33:03.2340605Z         "int": {
2026-07-26T22:33:03.2340695Z           "complete": true,
2026-07-26T22:33:03.2340797Z           "evidence": [
2026-07-26T22:33:03.2340878Z             {
2026-07-26T22:33:03.2341024Z               "path": "crates/spt-daemon/tests/registry_lifecycle.rs",
2026-07-26T22:33:03.2341102Z               "line": 573
2026-07-26T22:33:03.2341197Z             }
2026-07-26T22:33:03.2341277Z           ]
2026-07-26T22:33:03.2341368Z         },
2026-07-26T22:33:03.2341441Z         "unit": {
2026-07-26T22:33:03.2341545Z           "complete": true,
2026-07-26T22:33:03.2341635Z           "evidence": [
2026-07-26T22:33:03.2341726Z             {
2026-07-26T22:33:03.2341831Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.2341921Z               "line": 1732
2026-07-26T22:33:03.2342007Z             }
2026-07-26T22:33:03.2342089Z           ]
2026-07-26T22:33:03.2342174Z         }
2026-07-26T22:33:03.2342260Z       }
2026-07-26T22:33:03.2342351Z     },
2026-07-26T22:33:03.2342437Z     {
2026-07-26T22:33:03.2342532Z       "id": "REQ-REL-1",
2026-07-26T22:33:03.2344092Z       "title": "HISTORICAL (superseded by ADR-0036 / REQ-RELEASE-CHANNEL-PRIVATE + REQ-DOCS-LOCAL-SERVER): spt-releases publish-target repo — README public face, licensing split, Pages docs at the ADR-0014 canonical URL. The Pages pipeline retired at THE-FORKENING (docs-publish.yml deleted W2, xtask site() deleted W3); the licensing-split artifacts (releases-repo/LICENSE-*) remain in-repo and the repo-topology story lives in CONTEXT §Project infrastructure. doc stage retained as the historical record on ADR-0014.",
2026-07-26T22:33:03.2344206Z       "requiredStages": [
2026-07-26T22:33:03.2344283Z         "doc"
2026-07-26T22:33:03.2344370Z       ],
2026-07-26T22:33:03.2344450Z       "stages": {
2026-07-26T22:33:03.2344526Z         "doc": {
2026-07-26T22:33:03.2344608Z           "complete": true,
2026-07-26T22:33:03.2344694Z           "evidence": [
2026-07-26T22:33:03.2344783Z             {
2026-07-26T22:33:03.2344999Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-07-26T22:33:03.2345084Z               "line": 3
2026-07-26T22:33:03.2345165Z             }
2026-07-26T22:33:03.2345243Z           ]
2026-07-26T22:33:03.2345319Z         },
2026-07-26T22:33:03.2345399Z         "impl": {
2026-07-26T22:33:03.2345493Z           "complete": false,
2026-07-26T22:33:03.2345584Z           "evidence": []
2026-07-26T22:33:03.2345669Z         },
2026-07-26T22:33:03.2345748Z         "int": {
2026-07-26T22:33:03.2345848Z           "complete": false,
2026-07-26T22:33:03.2345939Z           "evidence": []
2026-07-26T22:33:03.2346026Z         },
2026-07-26T22:33:03.2346105Z         "unit": {
2026-07-26T22:33:03.2346201Z           "complete": false,
2026-07-26T22:33:03.2346293Z           "evidence": []
2026-07-26T22:33:03.2346369Z         }
2026-07-26T22:33:03.2346449Z       }
2026-07-26T22:33:03.2346531Z     },
2026-07-26T22:33:03.2346612Z     {
2026-07-26T22:33:03.2346712Z       "id": "REQ-REL-2",
2026-07-26T22:33:03.2347179Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-07-26T22:33:03.2347388Z       "requiredStages": [
2026-07-26T22:33:03.2347465Z         "impl",
2026-07-26T22:33:03.2347547Z         "int"
2026-07-26T22:33:03.2347627Z       ],
2026-07-26T22:33:03.2347722Z       "stages": {
2026-07-26T22:33:03.2347805Z         "doc": {
2026-07-26T22:33:03.2347904Z           "complete": true,
2026-07-26T22:33:03.2347994Z           "evidence": [
2026-07-26T22:33:03.2348080Z             {
2026-07-26T22:33:03.2348196Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-07-26T22:33:03.2348289Z               "line": 6
2026-07-26T22:33:03.2348370Z             }
2026-07-26T22:33:03.2348446Z           ]
2026-07-26T22:33:03.2348533Z         },
2026-07-26T22:33:03.2348618Z         "impl": {
2026-07-26T22:33:03.2348775Z           "complete": true,
2026-07-26T22:33:03.2348866Z           "evidence": [
2026-07-26T22:33:03.2349032Z             {
2026-07-26T22:33:03.2349167Z               "path": ".github/workflows/release.yml",
2026-07-26T22:33:03.2349248Z               "line": 16
2026-07-26T22:33:03.2349333Z             },
2026-07-26T22:33:03.2349410Z             {
2026-07-26T22:33:03.2349514Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.2349609Z               "line": 647
2026-07-26T22:33:03.2349690Z             },
2026-07-26T22:33:03.2349768Z             {
2026-07-26T22:33:03.2349877Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.2349967Z               "line": 721
2026-07-26T22:33:03.2350054Z             },
2026-07-26T22:33:03.2350144Z             {
2026-07-26T22:33:03.2350248Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.2350334Z               "line": 911
2026-07-26T22:33:03.2350417Z             },
2026-07-26T22:33:03.2350496Z             {
2026-07-26T22:33:03.2350605Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.2350700Z               "line": 1082
2026-07-26T22:33:03.2350781Z             }
2026-07-26T22:33:03.2350865Z           ]
2026-07-26T22:33:03.2350941Z         },
2026-07-26T22:33:03.2351022Z         "int": {
2026-07-26T22:33:03.2351114Z           "complete": true,
2026-07-26T22:33:03.2351209Z           "evidence": [
2026-07-26T22:33:03.2351289Z             {
2026-07-26T22:33:03.2351414Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-07-26T22:33:03.2351494Z               "line": 20
2026-07-26T22:33:03.2351575Z             }
2026-07-26T22:33:03.2351657Z           ]
2026-07-26T22:33:03.2351743Z         },
2026-07-26T22:33:03.2351823Z         "unit": {
2026-07-26T22:33:03.2351923Z           "complete": false,
2026-07-26T22:33:03.2352015Z           "evidence": []
2026-07-26T22:33:03.2352101Z         }
2026-07-26T22:33:03.2352172Z       }
2026-07-26T22:33:03.2352262Z     },
2026-07-26T22:33:03.2352344Z     {
2026-07-26T22:33:03.2352439Z       "id": "REQ-REL-3",
2026-07-26T22:33:03.2352872Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-07-26T22:33:03.2352978Z       "requiredStages": [
2026-07-26T22:33:03.2353054Z         "impl",
2026-07-26T22:33:03.2353145Z         "unit"
2026-07-26T22:33:03.2353226Z       ],
2026-07-26T22:33:03.2353312Z       "stages": {
2026-07-26T22:33:03.2353392Z         "doc": {
2026-07-26T22:33:03.2353486Z           "complete": false,
2026-07-26T22:33:03.2353567Z           "evidence": []
2026-07-26T22:33:03.2353662Z         },
2026-07-26T22:33:03.2353737Z         "impl": {
2026-07-26T22:33:03.2353837Z           "complete": true,
2026-07-26T22:33:03.2353914Z           "evidence": [
2026-07-26T22:33:03.2354000Z             {
2026-07-26T22:33:03.2354118Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.2354204Z               "line": 324
2026-07-26T22:33:03.2354296Z             },
2026-07-26T22:33:03.2354372Z             {
2026-07-26T22:33:03.2354485Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.2354701Z               "line": 376
2026-07-26T22:33:03.2354790Z             },
2026-07-26T22:33:03.2354873Z             {
2026-07-26T22:33:03.2354986Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.2355063Z               "line": 624
2026-07-26T22:33:03.2355148Z             },
2026-07-26T22:33:03.2355230Z             {
2026-07-26T22:33:03.2355343Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.2355425Z               "line": 648
2026-07-26T22:33:03.2355503Z             },
2026-07-26T22:33:03.2355588Z             {
2026-07-26T22:33:03.2355687Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.2355769Z               "line": 689
2026-07-26T22:33:03.2355855Z             }
2026-07-26T22:33:03.2355940Z           ]
2026-07-26T22:33:03.2356020Z         },
2026-07-26T22:33:03.2356201Z         "int": {
2026-07-26T22:33:03.2356299Z           "complete": false,
2026-07-26T22:33:03.2356380Z           "evidence": []
2026-07-26T22:33:03.2356461Z         },
2026-07-26T22:33:03.2356543Z         "unit": {
2026-07-26T22:33:03.2356638Z           "complete": true,
2026-07-26T22:33:03.2356728Z           "evidence": [
2026-07-26T22:33:03.2356815Z             {
2026-07-26T22:33:03.2356934Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.2357028Z               "line": 1240
2026-07-26T22:33:03.2357110Z             },
2026-07-26T22:33:03.2357191Z             {
2026-07-26T22:33:03.2357300Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.2357396Z               "line": 1299
2026-07-26T22:33:03.2357478Z             }
2026-07-26T22:33:03.2357572Z           ]
2026-07-26T22:33:03.2357653Z         }
2026-07-26T22:33:03.2357735Z       }
2026-07-26T22:33:03.2357821Z     },
2026-07-26T22:33:03.2357916Z     {
2026-07-26T22:33:03.2358030Z       "id": "REQ-RELAY-NO-BUSY-DELIVER",
2026-07-26T22:33:03.2361406Z       "title": "MSG-IDENTITY W4 (operator self-send probe 2026-07-09, companion leg): the relay/idle-inject carrier MUST NOT fire for an ACTIVE endpoint — the daemon already guards send-time (daemon.stderr.log: 'ENDPOINT_INJECT: endpoint ACTIVE -> spool (deferred hint), not injected') yet the field row ended taken_leg='idle-inject' for a message sent while the endpoint was ACTIVE, so the guard is bypassed somewhere on the busy-to-idle EDGE (the parked-drain idle-injects rows that arrived during busy without re-checking whether a poll is concurrently draining them — the edge itself is when BOTH carriers are plausibly live). RCA-FIRST with REQ-CARRIER-CLAIM-EXCLUSIVE (same rig, same instrument); if the exclusive claim alone closes the double-delivery this leg may reduce to an ordering assertion — rule at RCA lock, don't build blind. Gate: unit — the idle-edge drain re-verifies activity (or defers to the claim) before idle-injecting; a row taken by a poll is never idle-injected. Kin REQ-IDLE-PARKED-DELIVERY (the drain this guards), REQ-MSG-IDLE-EDGE-DRAIN, F-023 anti-starvation gate (do NOT break the already-idle delivery class).",
2026-07-26T22:33:03.2361534Z       "requiredStages": [
2026-07-26T22:33:03.2361616Z         "unit"
2026-07-26T22:33:03.2361698Z       ],
2026-07-26T22:33:03.2361773Z       "stages": {
2026-07-26T22:33:03.2361864Z         "doc": {
2026-07-26T22:33:03.2361955Z           "complete": false,
2026-07-26T22:33:03.2362045Z           "evidence": []
2026-07-26T22:33:03.2362135Z         },
2026-07-26T22:33:03.2362217Z         "impl": {
2026-07-26T22:33:03.2362308Z           "complete": false,
2026-07-26T22:33:03.2362388Z           "evidence": []
2026-07-26T22:33:03.2362474Z         },
2026-07-26T22:33:03.2362552Z         "int": {
2026-07-26T22:33:03.2362651Z           "complete": false,
2026-07-26T22:33:03.2362746Z           "evidence": []
2026-07-26T22:33:03.2362837Z         },
2026-07-26T22:33:03.2362909Z         "unit": {
2026-07-26T22:33:03.2363013Z           "complete": true,
2026-07-26T22:33:03.2363103Z           "evidence": [
2026-07-26T22:33:03.2363181Z             {
2026-07-26T22:33:03.2363409Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.2363505Z               "line": 1498
2026-07-26T22:33:03.2363590Z             }
2026-07-26T22:33:03.2363671Z           ]
2026-07-26T22:33:03.2363752Z         }
2026-07-26T22:33:03.2363844Z       }
2026-07-26T22:33:03.2363924Z     },
2026-07-26T22:33:03.2364014Z     {
2026-07-26T22:33:03.2364127Z       "id": "REQ-RELEASE-CHANNEL-PRIVATE",
2026-07-26T22:33:03.2366276Z       "title": "THE-FORKENING W2 (ADR-0036 §2): the publish pipeline targets `BigscreenVR/spt-bs-releases` — release.yml assemble/draft/flip retargeted (draft lands on the bs releases repo, untagged, per the existing spt-releases pattern); docs-publish.yml RETIRED (no public docs, ADR-0014 superseded) with the mdbook build folded into ci.yml as the drift gate (CLAUDE.md mandate: doc generation stays CI-gated); counter + signing key + update-set format CONTINUE unchanged (trust anchor is the continuity, carrier is not). Gate: impl — workflow retarget + drift-gate fold; int — a full release dry-run assembles binaries + docs asset + signed update-set against the private channel. Kin REQ-DOCS-RELEASE-ASSET, REQ-UPDATE-GH-TRANSPORT, ADR-0036.",
2026-07-26T22:33:03.2366482Z       "requiredStages": [
2026-07-26T22:33:03.2366561Z         "impl",
2026-07-26T22:33:03.2366642Z         "int"
2026-07-26T22:33:03.2366728Z       ],
2026-07-26T22:33:03.2366817Z       "stages": {
2026-07-26T22:33:03.2366897Z         "doc": {
2026-07-26T22:33:03.2366997Z           "complete": false,
2026-07-26T22:33:03.2367079Z           "evidence": []
2026-07-26T22:33:03.2367160Z         },
2026-07-26T22:33:03.2367240Z         "impl": {
2026-07-26T22:33:03.2367336Z           "complete": true,
2026-07-26T22:33:03.2367423Z           "evidence": [
2026-07-26T22:33:03.2367508Z             {
2026-07-26T22:33:03.2367617Z               "path": ".github/workflows/ci.yml",
2026-07-26T22:33:03.2367723Z               "line": 293
2026-07-26T22:33:03.2367804Z             },
2026-07-26T22:33:03.2367903Z             {
2026-07-26T22:33:03.2368018Z               "path": ".github/workflows/release.yml",
2026-07-26T22:33:03.2368113Z               "line": 17
2026-07-26T22:33:03.2368198Z             },
2026-07-26T22:33:03.2368285Z             {
2026-07-26T22:33:03.2368390Z               "path": ".github/workflows/release.yml",
2026-07-26T22:33:03.2368481Z               "line": 165
2026-07-26T22:33:03.2368557Z             }
2026-07-26T22:33:03.2368648Z           ]
2026-07-26T22:33:03.2368728Z         },
2026-07-26T22:33:03.2368810Z         "int": {
2026-07-26T22:33:03.2368900Z           "complete": true,
2026-07-26T22:33:03.2369081Z           "evidence": [
2026-07-26T22:33:03.2369167Z             {
2026-07-26T22:33:03.2369282Z               "path": ".github/workflows/release.yml",
2026-07-26T22:33:03.2369372Z               "line": 167
2026-07-26T22:33:03.2369457Z             }
2026-07-26T22:33:03.2369537Z           ]
2026-07-26T22:33:03.2369619Z         },
2026-07-26T22:33:03.2369706Z         "unit": {
2026-07-26T22:33:03.2369809Z           "complete": false,
2026-07-26T22:33:03.2369891Z           "evidence": []
2026-07-26T22:33:03.2369977Z         }
2026-07-26T22:33:03.2370058Z       }
2026-07-26T22:33:03.2370148Z     },
2026-07-26T22:33:03.2370220Z     {
2026-07-26T22:33:03.2370344Z       "id": "REQ-RELEASE-MUSL-ARTIFACT",
2026-07-26T22:33:03.2372868Z       "title": "MUSL-TIER W3 (CI build + signed release + update-set publish + self-update E2E): release.yml gains a musl matrix entry (build on kitsubito; install musl-tools+cmake+target in-job, CC_x86_64_unknown_linux_musl=musl-gcc); the assemble job includes spt-x86_64-linux-musl in SHA256SUMS + the release upload; release-publish (xtask) signs the musl artifact; the update-set carries its artifact entry. This closes the field gap: a musl binary today fetches fine but ends UPDATE_FETCH_REJECTED:NoArtifactForPlatform('unknown'). Gate (release-pipeline touch -> real E2E): cut a draft/test release with the musl artifact; a static musl binary on a sub-2.39-glibc box runs spt update fetch -> gets the musl artifact (no NoArtifactForPlatform), verifies SHA256+signature over the musl bytes, applies, self-updates. musl is ADDITIVE — gnu stays the default Linux artifact.",
2026-07-26T22:33:03.2373078Z       "requiredStages": [
2026-07-26T22:33:03.2373159Z         "impl",
2026-07-26T22:33:03.2373245Z         "unit",
2026-07-26T22:33:03.2373325Z         "int"
2026-07-26T22:33:03.2373397Z       ],
2026-07-26T22:33:03.2373492Z       "stages": {
2026-07-26T22:33:03.2373569Z         "doc": {
2026-07-26T22:33:03.2373668Z           "complete": false,
2026-07-26T22:33:03.2373756Z           "evidence": []
2026-07-26T22:33:03.2373835Z         },
2026-07-26T22:33:03.2373912Z         "impl": {
2026-07-26T22:33:03.2374012Z           "complete": true,
2026-07-26T22:33:03.2374090Z           "evidence": [
2026-07-26T22:33:03.2374265Z             {
2026-07-26T22:33:03.2374375Z               "path": ".github/workflows/release.yml",
2026-07-26T22:33:03.2374461Z               "line": 33
2026-07-26T22:33:03.2374550Z             },
2026-07-26T22:33:03.2374625Z             {
2026-07-26T22:33:03.2374731Z               "path": ".github/workflows/release.yml",
2026-07-26T22:33:03.2374815Z               "line": 114
2026-07-26T22:33:03.2374900Z             }
2026-07-26T22:33:03.2374981Z           ]
2026-07-26T22:33:03.2375058Z         },
2026-07-26T22:33:03.2375144Z         "int": {
2026-07-26T22:33:03.2375239Z           "complete": true,
2026-07-26T22:33:03.2375320Z           "evidence": [
2026-07-26T22:33:03.2375411Z             {
2026-07-26T22:33:03.2375534Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-07-26T22:33:03.2375630Z               "line": 174
2026-07-26T22:33:03.2375706Z             }
2026-07-26T22:33:03.2375792Z           ]
2026-07-26T22:33:03.2375868Z         },
2026-07-26T22:33:03.2375950Z         "unit": {
2026-07-26T22:33:03.2376050Z           "complete": true,
2026-07-26T22:33:03.2376145Z           "evidence": [
2026-07-26T22:33:03.2376230Z             {
2026-07-26T22:33:03.2376346Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.2376426Z               "line": 1608
2026-07-26T22:33:03.2376507Z             }
2026-07-26T22:33:03.2376589Z           ]
2026-07-26T22:33:03.2376670Z         }
2026-07-26T22:33:03.2376750Z       }
2026-07-26T22:33:03.2376832Z     },
2026-07-26T22:33:03.2376904Z     {
2026-07-26T22:33:03.2377008Z       "id": "REQ-RESIDENT-SERVICE",
2026-07-26T22:33:03.2394159Z       "title": "ResidentService substrate (ADR-0049, design ratified 2026-07-26): a daemon-supervised binary an adapter declares via a `[service]` manifest section — core-owned from birth, NO perch/identity/address. SPAWN: the daemon launches it job-neutrally (detached_no_inherit + the cold-start ladder posture), so it is never a shell's child (`/T` tree-kill cannot reach it; the shell-descendant hazard class of REQ-SHELL-ADAPTER-OWNED-DETACHED-SERVICE never arises) and never inside a launching terminal's Job Object (the REQ-SHELL-CLI-SPAWN-JOB-EXPOSURE service half closes by construction). START TRIGGER declared in the manifest: start = 'boot' or start = 'bind'; supervised identically once running, with the wake-watcher scaffolding (backoff, give-up latch, one-per-instance lock, orphan-kill, brain-side reconcile) minus the offline-only flip. 'boot' is DESIRED-STATE-RUNNING, not an event: the supervisor reconciles a boot service toward running at EVERY opportunity — daemon boot, ADAPTER REGISTRATION while the daemon is live (operator addition 2026-07-26: installing or registering an adapter whose manifest declares a boot service starts it THEN — spt itself is never restarted to bring a new adapter's service up), update-hold release, and first shell bind as the defensive ensure. 'bind' starts only at the adapter's first shell bind. CARDINALITY: one supervised instance per registered adapter-option `<adapter>[:profile]` (consumer-confirmed as COHERENT TARGET SHAPE — flynn's precision, 2026-07-26: not exercisable by the first consumer until per-option config dirs exist; alchemy today has one config dir and daemon.toml carries exactly one guild_id); the adapter may keep its own kernel file lock as a private double-start guard — core neither reads nor depends on it. PER-OPTION IDENTITY IS THREADED (flynn's gap, accepted): the supervisor passes the adapter-option name and the per-option runtime dir into the service's spawn environment, so an adapter can scope its private guard AND its config per option — the mechanism that makes two-options-two-services deliverable rather than merely permitted. Without it, two options resolving one adapter config dir produce the silent flap flynn derived: instance two exits immediately on the kernel lock, core sees only start-then-die, and crash-relaunch backoff is CORRECT behavior against that observation — two correct components disagreeing about the unit. UPDATE IS A FIRST-CLASS SUPERVISOR OPERATION WITH AN EXPLICIT HOLD: quiesce -> hold (stopped and NEVER relaunched while held) -> bits swap -> start new bits -> release; adapter update-apply performs this ordered operation; crash-relaunch with backoff applies ONLY when not held. The forcing case is structural, not advisory (flynn, argued against their own convenience): an eager relaunch during a swap re-pins the OLD exe mid-deploy (Windows exe lock), converting a diagnosable os-error-5 into an unwinnable race — if delivery must sequence, the hold ships FIRST and a dead service stays dead until told otherwise (the STALE-ONLINE no-spontaneous-relaunch ruling, same reason, one layer down). FAST-EXIT IS A CONFIGURATION FAULT, NOT A CRASH: consecutive immediate exits (exit within a startup threshold, N in a row) trip the give-up latch EARLY with a distinct loud STARTUP_FAULT diagnostic carrying the captured early stderr — a double-start lock conflict then reads as the configuration fault it is, never as a silently flapping service ground through backoff. QUIESCE IS COOPERATIVE EXIT + DEADLINE: the supervisor places a stop-request marker (a file in the service's runtime dir — polling services observe it on their next cycle; no inbox exists or is added); the service exits WHEN SAFE and the kernel-observed exit IS the ack — 'not ready' is expressed by not-yet-exiting, so no busy record exists to go stale in either direction; a manifest-declared grace deadline (default ~30s) bounds the wait, then force-kill. Delay possible, veto never. An OPTIONAL advisory status line may surface in service status display — never consulted for decisions. LIVENESS IS DERIVED, NEVER RECORDED: the supervisor is the parent and holds the child handle (exit is kernel-observed); no supervisor-maintained running-record exists (the v0.43.0 stale-online lesson applied one layer down — flynn's condition, structural here). Any status/version identity surface keeps the locked-file split lesson: never require reading a file the service holds an exclusive OS lock on (Windows). CLI INVOCATION CAPABILITY (consumer-blocking, non-negotiable per flynn): the supervisor threads the environment so the service can invoke the spt CLI (`spt send` et al., identityless cli@node from-label, durable spooling per ADR-0002) — if a supervised Hub cannot shell out to spt send, node-wide Watch delivery dies silently. ADDRESSING: none — a service needing a two-way agent-facing surface has one at its adapter's endpoint/shell layer (the alchemy layering argument that re-scoped ADR-0023's faceless-service rejection); AlwaysOnEndpoint (REQ-EP-8) = this substrate + the addressable front. Gate at activation (all legs against a MOCK service adapter — the gate never depends on the first consumer being the boot specimen): int — a manifest [service start='boot'] binary rises with the daemon job-neutrally, a registration of that manifest against an ALREADY-LIVE daemon starts the service without any restart, survives a shell teardown of the same adapter (tree-kill does not reach it), a held update swaps bits with zero relaunch races (hold observed under a concurrent crash), quiesce marker -> cooperative exit within grace, deadline -> force-kill on a wedged mock, a mock that exits instantly N consecutive times surfaces STARTUP_FAULT (not a backoff flap), and the service successfully invokes spt send from its supervised environment.",
2026-07-26T22:33:03.2394717Z       "requiredStages": [],
2026-07-26T22:33:03.2394803Z       "stages": {
2026-07-26T22:33:03.2394895Z         "doc": {
2026-07-26T22:33:03.2394979Z           "complete": false,
2026-07-26T22:33:03.2395070Z           "evidence": []
2026-07-26T22:33:03.2395157Z         },
2026-07-26T22:33:03.2395243Z         "impl": {
2026-07-26T22:33:03.2395327Z           "complete": false,
2026-07-26T22:33:03.2395428Z           "evidence": []
2026-07-26T22:33:03.2395505Z         },
2026-07-26T22:33:03.2395591Z         "int": {
2026-07-26T22:33:03.2395684Z           "complete": false,
2026-07-26T22:33:03.2395784Z           "evidence": []
2026-07-26T22:33:03.2395865Z         },
2026-07-26T22:33:03.2395950Z         "unit": {
2026-07-26T22:33:03.2396034Z           "complete": false,
2026-07-26T22:33:03.2396130Z           "evidence": []
2026-07-26T22:33:03.2396216Z         }
2026-07-26T22:33:03.2396297Z       }
2026-07-26T22:33:03.2396378Z     },
2026-07-26T22:33:03.2396459Z     {
2026-07-26T22:33:03.2396574Z       "id": "REQ-RESIZE-INPUT-MODE-INTEGRITY",
2026-07-26T22:33:03.2405417Z       "title": "RESCOPED 2026-07-22 by ADR-0047 Amendment 2 + KNOWN-HAZARDS 7.55 (doyle-ratified), on the measurement rather than on the supposition. FIELD EVIDENCE IS REAL: hertz's second ENLYZEAM capture shows the operator's keystrokes as isolated one-byte OUTPUT records in the child->broker RAW DRAIN — server-side, upstream of any client console, so independent of the 7.56 presentation root that explains the other half of the /c/config line. LOCAL SEAM MEASURES CLEAN: a probe child under a real ConPTY, clamped raw at startup and resized 24x80->60x131 live, reports an IDENTICAL input mode word at four sample points (boot / before-resize / after-resize / before-write, all in=0x000001f0 echo=0 line=0), and typed bytes do not come back as output; a seeded capability probe moves BOTH observables, so the absence is earned, not vacuous. Amendment 1's addendum supposed the resize path re-enables console echo — on this box and portable_pty/ConPTY version it does NOT. TRIGGER UNPINNED. OPEN CANDIDATE (hertz field question, deliberately NOT built against): the pseudoconsole BOOTS with ENABLE_ECHO_INPUT/ENABLE_LINE_INPUT ON (in=0x000001f7 measured) and the CHILD clamps them off, so any UNCLAMPED WINDOW (startup, or a re-clamp after a TUI state transition) echoes by default with no seam re-enabling anything — reframing the question from who turns echo back on to whether there is a window where nobody has turned it off yet. NO impl STAGE, for a structural reason and not a scheduling one: the hosted child's console handles belong to the pseudoconsole it is attached to and the daemon holds only the master end, so the daemon can neither OBSERVE nor SET those modes — instrumenting spt-term's resize seam would probe a console that is not the one in question, and a server-side clamp is equally impossible. Shipping instrumentation that measures the wrong console is manufactured confidence (doyle, declined explicitly); the RIG is the instrument, and the probe-child pattern ships as a debug tool if the field ever needs live diagnosis. The restore-placement question (spt-term seam vs broker write_input) is MOOT, not answered: there is nothing to restore when the mode is preserved. WHAT THIS REQ OWNS: unit — the probe protocol contract (the verdict travels in the stdout protocol line because under a ConPTY the child's stderr is interleaved into the same re-rendered stream and arrives shredded, so a refused SetConsoleMode could otherwise read as a measurement); int — the four-sample measurement, the typed-bytes-do-not-echo symptom leg (which survives being wrong about the mechanism), and the seeded capability probe. Rig-craft pinned in the rig and transferable: a probe that never clamps raw sits at the very default the seam is suspected of restoring and cannot tell reset from never-changed; and ConPTY's post-resize REPAINT re-emits earlier output, impersonating a fresh reply to any rig that matches loosely. Kin REQ-RC-NEWLINE-PRESENTATION-TRUTH (7.56, the presentation half, FIXED) and REQ-ATTACH-RESIZE-REPAINT (7.54, rescoped the same honest way).",
2026-07-26T22:33:03.2405736Z       "requiredStages": [
2026-07-26T22:33:03.2405817Z         "doc",
2026-07-26T22:33:03.2405916Z         "unit",
2026-07-26T22:33:03.2405993Z         "int"
2026-07-26T22:33:03.2406075Z       ],
2026-07-26T22:33:03.2406165Z       "stages": {
2026-07-26T22:33:03.2406244Z         "doc": {
2026-07-26T22:33:03.2406339Z           "complete": true,
2026-07-26T22:33:03.2406430Z           "evidence": [
2026-07-26T22:33:03.2406501Z             {
2026-07-26T22:33:03.2406618Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.2406704Z               "line": 783
2026-07-26T22:33:03.2406786Z             },
2026-07-26T22:33:03.2406862Z             {
2026-07-26T22:33:03.2407029Z               "path": "docs/adr/0047-daemon-lifecycle-custody-authority.md",
2026-07-26T22:33:03.2407124Z               "line": 218
2026-07-26T22:33:03.2407205Z             }
2026-07-26T22:33:03.2407295Z           ]
2026-07-26T22:33:03.2407373Z         },
2026-07-26T22:33:03.2407468Z         "impl": {
2026-07-26T22:33:03.2407562Z           "complete": false,
2026-07-26T22:33:03.2407663Z           "evidence": []
2026-07-26T22:33:03.2407744Z         },
2026-07-26T22:33:03.2407825Z         "int": {
2026-07-26T22:33:03.2407920Z           "complete": true,
2026-07-26T22:33:03.2408017Z           "evidence": [
2026-07-26T22:33:03.2408096Z             {
2026-07-26T22:33:03.2408264Z               "path": "crates/spt-term/tests/resize_console_mode_integrity.rs",
2026-07-26T22:33:03.2408351Z               "line": 166
2026-07-26T22:33:03.2408439Z             },
2026-07-26T22:33:03.2408516Z             {
2026-07-26T22:33:03.2412490Z               "path": "crates/spt-term/tests/resize_console_mode_integrity.rs",
2026-07-26T22:33:03.2412599Z               "line": 230
2026-07-26T22:33:03.2412703Z             },
2026-07-26T22:33:03.2412780Z             {
2026-07-26T22:33:03.2412970Z               "path": "crates/spt-term/tests/resize_console_mode_integrity.rs",
2026-07-26T22:33:03.2413056Z               "line": 270
2026-07-26T22:33:03.2413143Z             }
2026-07-26T22:33:03.2413223Z           ]
2026-07-26T22:33:03.2413304Z         },
2026-07-26T22:33:03.2413386Z         "unit": {
2026-07-26T22:33:03.2413481Z           "complete": true,
2026-07-26T22:33:03.2413571Z           "evidence": [
2026-07-26T22:33:03.2413661Z             {
2026-07-26T22:33:03.2413829Z               "path": "crates/spt-term/tests/resize_console_mode_integrity.rs",
2026-07-26T22:33:03.2413923Z               "line": 328
2026-07-26T22:33:03.2413999Z             }
2026-07-26T22:33:03.2414090Z           ]
2026-07-26T22:33:03.2414170Z         }
2026-07-26T22:33:03.2414264Z       }
2026-07-26T22:33:03.2414345Z     },
2026-07-26T22:33:03.2414431Z     {
2026-07-26T22:33:03.2414531Z       "id": "REQ-REST-TERMINAL-NORMALIZE",
2026-07-26T22:33:03.2418099Z       "title": "REGISTRY-LIFECYCLE W2 (ADR-0041 decision 3, rest-normalize P0): definitive hosted-session loss normalizes TERMINALLY and ATOMICALLY — one store-level mutation writes status=offline + rest_state=suspended + clears dormant_since_ms in the SAME info.json write, invoked at authoritative broker-session-loss/liveness-reap + cmd_stop. NOT daemon_rest_event(Suspend) (no edge when effective already Suspended — raw Active intent survives); NOT reader-side blanket offline-implies-suspended (destroys explicit-Wake semantics: wake writes intent first, reconcile consumes). Graceful shutdown keeps echo-before-teardown. Kills the zombie WAKE_RESUME loop (perri field: repeated cross-generation resumes of a dead session). Gate: impl — atomic terminal-normalize mutation + call sites; unit — store-level atomic pair never mixed + endpoint_stop covers already-offline/raw-Active input; int — session vanish means offline+suspended and the NEXT reconcile emits NO WAKE_RESUME, explicit suspended/offline->Wake->Active launches EXACTLY once, RefuseLivePid-then-valid-bind custody race leaves the revived seat unsuspended; doc — ADR-0041.",
2026-07-26T22:33:03.2418332Z       "requiredStages": [
2026-07-26T22:33:03.2418418Z         "doc",
2026-07-26T22:33:03.2418499Z         "impl",
2026-07-26T22:33:03.2418577Z         "unit",
2026-07-26T22:33:03.2418661Z         "int"
2026-07-26T22:33:03.2418733Z       ],
2026-07-26T22:33:03.2418824Z       "stages": {
2026-07-26T22:33:03.2418911Z         "doc": {
2026-07-26T22:33:03.2419091Z           "complete": true,
2026-07-26T22:33:03.2419178Z           "evidence": [
2026-07-26T22:33:03.2419268Z             {
2026-07-26T22:33:03.2419414Z               "path": "docs/adr/0041-endpoint-lifecycle-truth.md",
2026-07-26T22:33:03.2419504Z               "line": 51
2026-07-26T22:33:03.2419590Z             }
2026-07-26T22:33:03.2419674Z           ]
2026-07-26T22:33:03.2419759Z         },
2026-07-26T22:33:03.2419841Z         "impl": {
2026-07-26T22:33:03.2419942Z           "complete": true,
2026-07-26T22:33:03.2420036Z           "evidence": [
2026-07-26T22:33:03.2420113Z             {
2026-07-26T22:33:03.2420242Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.2420322Z               "line": 574
2026-07-26T22:33:03.2420408Z             },
2026-07-26T22:33:03.2420495Z             {
2026-07-26T22:33:03.2420609Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.2420708Z               "line": 1293
2026-07-26T22:33:03.2420786Z             },
2026-07-26T22:33:03.2420876Z             {
2026-07-26T22:33:03.2420999Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.2421095Z               "line": 832
2026-07-26T22:33:03.2421172Z             },
2026-07-26T22:33:03.2421262Z             {
2026-07-26T22:33:03.2421376Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.2421477Z               "line": 882
2026-07-26T22:33:03.2421552Z             },
2026-07-26T22:33:03.2421638Z             {
2026-07-26T22:33:03.2421749Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.2421839Z               "line": 387
2026-07-26T22:33:03.2421924Z             },
2026-07-26T22:33:03.2422026Z             {
2026-07-26T22:33:03.2422186Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2422319Z               "line": 7412
2026-07-26T22:33:03.2422439Z             }
2026-07-26T22:33:03.2422558Z           ]
2026-07-26T22:33:03.2422672Z         },
2026-07-26T22:33:03.2422797Z         "int": {
2026-07-26T22:33:03.2422920Z           "complete": true,
2026-07-26T22:33:03.2423045Z           "evidence": [
2026-07-26T22:33:03.2423150Z             {
2026-07-26T22:33:03.2423360Z               "path": "crates/spt-daemon/tests/endpoint_lifecycle.rs",
2026-07-26T22:33:03.2423483Z               "line": 378
2026-07-26T22:33:03.2423611Z             }
2026-07-26T22:33:03.2423726Z           ]
2026-07-26T22:33:03.2423845Z         },
2026-07-26T22:33:03.2423960Z         "unit": {
2026-07-26T22:33:03.2424231Z           "complete": true,
2026-07-26T22:33:03.2424352Z           "evidence": [
2026-07-26T22:33:03.2424474Z             {
2026-07-26T22:33:03.2424646Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-07-26T22:33:03.2424772Z               "line": 307
2026-07-26T22:33:03.2424881Z             },
2026-07-26T22:33:03.2425001Z             {
2026-07-26T22:33:03.2425157Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.2425282Z               "line": 1008
2026-07-26T22:33:03.2425392Z             },
2026-07-26T22:33:03.2425510Z             {
2026-07-26T22:33:03.2425659Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.2425787Z               "line": 1043
2026-07-26T22:33:03.2425893Z             },
2026-07-26T22:33:03.2425993Z             {
2026-07-26T22:33:03.2426307Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2426426Z               "line": 14036
2026-07-26T22:33:03.2426532Z             }
2026-07-26T22:33:03.2426650Z           ]
2026-07-26T22:33:03.2426774Z         }
2026-07-26T22:33:03.2426876Z       }
2026-07-26T22:33:03.2426998Z     },
2026-07-26T22:33:03.2427108Z     {
2026-07-26T22:33:03.2427248Z       "id": "REQ-REST-VERB-ROUTING",
2026-07-26T22:33:03.2436982Z       "title": "A-3 (REMOTE-TRUTH triage §A + Q3 operator-law): a BARE-id rest verb (spt wake/suspend <id>) routes across the subnet like send's fallback instead of failing local-only. ROOT (certain): cmd_rest (cli.rs:3296) gates the remote arm on id.contains('@'|':'); a bare id falls to the local-only arm (cli.rs:3340) → daemon_rest_event → info::read_info miss (resting.rs:248) → 'WOKE_FAIL:{id}: info.json absent or unreadable — not a hosted perch'. cmd_send (cli.rs:5142) DOES fall back on a local miss; cmd_rest's remote arm (cli.rs:3307, wan_rest) already handles every WanRestOutcome — it is simply never reached on a bare-id local miss. Contradicts CONTEXT:286 'a wake must route'. Q3 SUBSTRATE GAP: resolve_across_visible (registry.rs:971) filters only by Status::routable() and its Ambiguity payload is node-hexes-only — it CANNOT express the Q3 status rule; per-candidate (node,status) comes from SubnetRegistry::instances(id). FIX: a NEW pure select_rest_target helper (status-aware, isolated from resolve_across_visible which cmd_send keeps) applying GOAL-SATISFACTION semantics (ADR/triage addendum @188d269, NOT naive verb symmetry — the mixed case breaks symmetry): wake is an ∃-goal (satisfied when ANY instance Active), suspend is a ∀-goal (satisfied when ALL instances Suspended); one helper parameterized by the verb's satisfaction predicate — 0 candidates→NotFound; goal already satisfied→NoOp naming the satisfying node(s); exactly 1 ACTIONABLE (not-at-target) instance→Act(node); >1 actionable→Ambiguous(copy-paste id@node list). Edge rulings: wake with >1 Active = NoOp naming ALL active nodes (NOT Ambiguous — nothing actionable); suspend mixed (X suspended + Y active, NOT ∀-satisfied) = Act(Y) if exactly one active / Ambiguous if several active. Candidate status is ADVERTISED/gossiped (post-A-1 shared-derivation, may be STALE) so a NoOp verdict is ADVISORY and the qualified id@node path is the operator override (noted in the helper doc-comment). cmd_rest's bare-id local miss loads snapshots → instances(id) → select_rest_target → dispatches (Act→wan_rest to the node / NoOp naming node(s) / Ambiguous render_refusal copy-paste id@node list / NotFound NO_ENDPOINT), all F-1 public language from day one. Qualified id@node path unchanged; shutdown leg-2 stays LOCAL_ONLY. Red-first: a bare id present ONLY in a remote registry snapshot routes to that node instead of WOKE_FAIL.",
2026-07-26T22:33:03.2437168Z       "requiredStages": [
2026-07-26T22:33:03.2437267Z         "impl",
2026-07-26T22:33:03.2437344Z         "unit",
2026-07-26T22:33:03.2437436Z         "int"
2026-07-26T22:33:03.2437530Z       ],
2026-07-26T22:33:03.2437621Z       "stages": {
2026-07-26T22:33:03.2437707Z         "doc": {
2026-07-26T22:33:03.2437812Z           "complete": false,
2026-07-26T22:33:03.2438096Z           "evidence": []
2026-07-26T22:33:03.2438195Z         },
2026-07-26T22:33:03.2438270Z         "impl": {
2026-07-26T22:33:03.2438366Z           "complete": true,
2026-07-26T22:33:03.2438457Z           "evidence": [
2026-07-26T22:33:03.2438538Z             {
2026-07-26T22:33:03.2438671Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.2438767Z               "line": 585
2026-07-26T22:33:03.2438848Z             },
2026-07-26T22:33:03.2438932Z             {
2026-07-26T22:33:03.2439214Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.2439314Z               "line": 1098
2026-07-26T22:33:03.2439411Z             },
2026-07-26T22:33:03.2439501Z             {
2026-07-26T22:33:03.2439615Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2439697Z               "line": 3965
2026-07-26T22:33:03.2439896Z             }
2026-07-26T22:33:03.2439979Z           ]
2026-07-26T22:33:03.2440060Z         },
2026-07-26T22:33:03.2440158Z         "int": {
2026-07-26T22:33:03.2440255Z           "complete": true,
2026-07-26T22:33:03.2440331Z           "evidence": [
2026-07-26T22:33:03.2440412Z             {
2026-07-26T22:33:03.2440539Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.2440634Z               "line": 914
2026-07-26T22:33:03.2440715Z             },
2026-07-26T22:33:03.2440803Z             {
2026-07-26T22:33:03.2440928Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.2441010Z               "line": 1563
2026-07-26T22:33:03.2441086Z             }
2026-07-26T22:33:03.2441161Z           ]
2026-07-26T22:33:03.2441252Z         },
2026-07-26T22:33:03.2441334Z         "unit": {
2026-07-26T22:33:03.2441429Z           "complete": true,
2026-07-26T22:33:03.2441524Z           "evidence": [
2026-07-26T22:33:03.2441610Z             {
2026-07-26T22:33:03.2441739Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.2441877Z               "line": 619
2026-07-26T22:33:03.2441973Z             },
2026-07-26T22:33:03.2442073Z             {
2026-07-26T22:33:03.2442186Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.2442274Z               "line": 699
2026-07-26T22:33:03.2442363Z             },
2026-07-26T22:33:03.2442444Z             {
2026-07-26T22:33:03.2442579Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.2442668Z               "line": 2472
2026-07-26T22:33:03.2442758Z             },
2026-07-26T22:33:03.2442846Z             {
2026-07-26T22:33:03.2442992Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.2443092Z               "line": 2519
2026-07-26T22:33:03.2443194Z             },
2026-07-26T22:33:03.2443279Z             {
2026-07-26T22:33:03.2443416Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.2443506Z               "line": 2554
2026-07-26T22:33:03.2443608Z             },
2026-07-26T22:33:03.2443697Z             {
2026-07-26T22:33:03.2443821Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.2443917Z               "line": 1029
2026-07-26T22:33:03.2444002Z             }
2026-07-26T22:33:03.2444083Z           ]
2026-07-26T22:33:03.2444161Z         }
2026-07-26T22:33:03.2444246Z       }
2026-07-26T22:33:03.2444321Z     },
2026-07-26T22:33:03.2444407Z     {
2026-07-26T22:33:03.2444532Z       "id": "REQ-RESUME-ADAPTER-FOLLOWS-SESSION",
2026-07-26T22:33:03.2450810Z       "title": "D-2 (REMOTE-TRUTH triage §D-2 + operator Q5 @c248afc): a resume-from-history restores the RECORDED session adapter (REQ-SESSION-ADAPTER-RECORDED) — the resumed harness is the one the session ran under, re-stamped onto the endpoint PRE-SPAWN, and an unregistered recorded adapter refuses LOUDLY before launching anything. ROOT: the picker's resume_outcome (model.rs:1285) bakes adapter=ep.adapter_profile from the selected ENDPOINT, ignoring the ledger row — so a resume always uses the endpoint's CURRENT adapter even when the session ran under a different one; and the endpoint's info.adapter is never re-stamped to the row's on the resume path (cli.rs:1962 skeleton writer early-returns for an existing perch — adapter immutable, carried by bind's stamp_creation_fields). FIX (doyle fork ruling): ResumeRow (model.rs:199) gains adapter: Option<String> threaded from SessionEntry.adapter in picker/data.rs; the row title (model.rs:228) renders [{adapter}] when Some ({head} [{adapter}] - {time} (…{id5})); resume_outcome bakes the ROW's adapter with an endpoint fallback (row.adapter.unwrap_or(ep.adapter_profile)) — None → the endpoint's current stamp (benign degrade). The pre-spawn RE-STAMP + refusal ride the picker resume dispatch (mod.rs:360 Run arm, resume.is_some()) reusing the hazard-guarded mutate_info seam (write_adapter_change/mod.rs:336), NEVER the bind path: order = read current info.adapter → if the baked adapter DIFFERS (a real replace; a None-row bakes the endpoint's own → equals current → NO write) → registered-check via resolve_option (Err(NotRegistered) → loud F-1 refusal naming the adapter + `spt adapter add`, NO stamp, NO spawn) → write_adapter_change re-stamp → spawn. ONE adapter write path (the mutate_info seam); REQ-HAZARD-ADAPTER-PROFILE-STAMP-CLOBBER's bind/hook path (stamp_creation_fields, home.rs) UNTOUCHED — both its guard tests stay green as the gate condition. Red-first: a resume row adapter=\"claude-spt\" over an endpoint stamped \"claude-spt:ccs\" → the baked Outcome.adapter == \"claude-spt\" (the deliberate replace) and the pre-spawn stamp writes it.",
2026-07-26T22:33:03.2451156Z       "requiredStages": [
2026-07-26T22:33:03.2451247Z         "impl",
2026-07-26T22:33:03.2451326Z         "unit"
2026-07-26T22:33:03.2451406Z       ],
2026-07-26T22:33:03.2451498Z       "stages": {
2026-07-26T22:33:03.2451618Z         "doc": {
2026-07-26T22:33:03.2451716Z           "complete": false,
2026-07-26T22:33:03.2451807Z           "evidence": []
2026-07-26T22:33:03.2451880Z         },
2026-07-26T22:33:03.2451975Z         "impl": {
2026-07-26T22:33:03.2452098Z           "complete": true,
2026-07-26T22:33:03.2452194Z           "evidence": [
2026-07-26T22:33:03.2452323Z             {
2026-07-26T22:33:03.2452437Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.2452542Z               "line": 546
2026-07-26T22:33:03.2452647Z             },
2026-07-26T22:33:03.2452728Z             {
2026-07-26T22:33:03.2452838Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.2452923Z               "line": 441
2026-07-26T22:33:03.2453013Z             }
2026-07-26T22:33:03.2453119Z           ]
2026-07-26T22:33:03.2453205Z         },
2026-07-26T22:33:03.2453276Z         "int": {
2026-07-26T22:33:03.2453367Z           "complete": false,
2026-07-26T22:33:03.2453454Z           "evidence": []
2026-07-26T22:33:03.2453538Z         },
2026-07-26T22:33:03.2453620Z         "unit": {
2026-07-26T22:33:03.2453721Z           "complete": true,
2026-07-26T22:33:03.2453802Z           "evidence": [
2026-07-26T22:33:03.2453881Z             {
2026-07-26T22:33:03.2454004Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2454105Z               "line": 2175
2026-07-26T22:33:03.2454187Z             },
2026-07-26T22:33:03.2454266Z             {
2026-07-26T22:33:03.2454367Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2454453Z               "line": 2686
2026-07-26T22:33:03.2454539Z             }
2026-07-26T22:33:03.2454624Z           ]
2026-07-26T22:33:03.2454706Z         }
2026-07-26T22:33:03.2454787Z       }
2026-07-26T22:33:03.2454868Z     },
2026-07-26T22:33:03.2454953Z     {
2026-07-26T22:33:03.2455050Z       "id": "REQ-RESUME-CONTEXT-PULL",
2026-07-26T22:33:03.2466630Z       "title": "Adapter-callable resume-context pull verb + not-yet-synthesized commune/signoff drop append (legacy-SPT parity, operator-directed 2026-06-24). GAP: spt-core exposes NO verb for a harness adapter's SessionStart hook to pull an agent's resume context — `resume::download_psyche_context` (spt-live/src/resume.rs:88, composes <live-role>+<live-context>+<project-context> from the durable two-tier store) is INTERNAL with ZERO spt callers and no ApiCmd verb (api/mod.rs ApiCmd enum has none); resume.rs:9 documents the intended 'adapter pulls it in its SessionStart hook' path but it was NEVER wired. Result: a harness adapter cannot inject the agent's durable mind on resume at all (claude-spt today runs only `api boundary` session-rotation + an identity brief — the agent resumes WITHOUT its mind). TIER-1 SCOPE (operator-approved; Tier-2 = drift-stamp/<current>/drift-directive + <memformat> + Pulse-Log DEFERRED to a separate parity item, NOT v0.15.0 — the legacy download_payload [claude_skill_owl context.rs:344] is richer but memformat is roadmap-deferred + drift-stamp is an orthogonal cross-machine-drift feature). TWO PARTS: (1) EXPOSE `spt api psyche-download <id> [--session-id <sid>]` -> stdout = the composed brief, project_id resolved from the endpoint's bound cwd (info::read_info -> cwd -> project derive; NO --project arg), auth-gated like sibling id-scoped verbs (the `gated(&id,&auth,…)` pattern); empty store -> NO-CONTEXT on stderr (mirror legacy). The adapter SessionStart hook runs it + injects stdout as additionalContext. (2) APPEND any commune/signoff drop NOT YET SYNTHESIZED into the durable tiers as a distinct <pending-commune>/<pending-signoff> slice AFTER the durable slices. GATING (operator ruling): append while NOT-YET-SYNTHESIZED, NOT merely 'while the raw file is on disk' — in today's synchronous ingest (ingest_drops route_two_slice writes durable THEN deletes the file, lifecycle.rs:466 @ DEFAULT_PULSE_PERIOD 5s) the two coincide (a watched-dir drop IS pre-synthesis), so the v1 realization reads the manifest-declared session.commune_dir/signoff_dir (manifest.rs:208/210) for a present <id>-commune.md/<id>-signoff.md (COMMUNE_SUFFIX/SIGNOFF_SUFFIX, ingest.rs); the CONTRACT keys on synthesis-state so it stays correct when async Psyche synthesis lands (a consumed-but-not-yet-committed drop stays appended via a pending-synthesis staging set — forward hook). The agent-checkpoint trigger sentinel CHECKPOINT_SENTINEL=`!!checkpoint!!` (a FIXED spt-core constant — operator-specified, CONTEXT.md §fixed-constants, NOT adapter-configurable) is stripped at BOTH drop-body points via one shared `strip_checkpoint_markers` (remove every token, keep inter-marker text, collapse trivial whitespace): the PRE-synthesis pending-append (resume::append_pending) AND the POST-synthesis durable ingest (ingest::route_slices — the single choke covering route_two_slice + signoff.write_resume_commune; strip-then-empty-filter so a marker-only slice routes nowhere) — else the marker would persist PERMANENTLY in live-context.md once a checkpoint drop synthesizes + re-trigger once the adapter's checkpoint detection is live. PRESENTATION-ONLY: the append NEVER writes the durable store (spt-core remains sole store-writer, REQ-HAZARD-DROP-FILE-SINGLE-WRITER; mirror legacy's read-only/process_file_drop-sole-deleter discipline). SELF-CLEARING: once synthesis commits the <pending-*> slice vanishes — no duplication. CORE-OWNED (not adapter): an adapter-side raw-file read RACES spt-core's ingest-delete (TOCTOU, ingest.rs:161 removes the drop on pulse-consume); the fold MUST live in the single composer all resume pulls flow through. New public CLI verb -> docs-drift gate (xtask gen + reference.md no-internal-codes, cli-command-docs-drift). (v0.15.0 parity wave W5)",
2026-07-26T22:33:03.2467050Z       "requiredStages": [
2026-07-26T22:33:03.2467130Z         "doc",
2026-07-26T22:33:03.2467208Z         "impl",
2026-07-26T22:33:03.2467295Z         "unit",
2026-07-26T22:33:03.2467427Z         "int"
2026-07-26T22:33:03.2467508Z       ],
2026-07-26T22:33:03.2467585Z       "stages": {
2026-07-26T22:33:03.2467670Z         "doc": {
2026-07-26T22:33:03.2467765Z           "complete": true,
2026-07-26T22:33:03.2467913Z           "evidence": [
2026-07-26T22:33:03.2467999Z             {
2026-07-26T22:33:03.2468099Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.2468266Z               "line": 158
2026-07-26T22:33:03.2468356Z             },
2026-07-26T22:33:03.2468433Z             {
2026-07-26T22:33:03.2468534Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.2468624Z               "line": 173
2026-07-26T22:33:03.2468710Z             }
2026-07-26T22:33:03.2468801Z           ]
2026-07-26T22:33:03.2468881Z         },
2026-07-26T22:33:03.2469048Z         "impl": {
2026-07-26T22:33:03.2469196Z           "complete": true,
2026-07-26T22:33:03.2469282Z           "evidence": [
2026-07-26T22:33:03.2469358Z             {
2026-07-26T22:33:03.2469479Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:03.2469577Z               "line": 56
2026-07-26T22:33:03.2469662Z             },
2026-07-26T22:33:03.2469743Z             {
2026-07-26T22:33:03.2469838Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:03.2470046Z               "line": 140
2026-07-26T22:33:03.2470128Z             },
2026-07-26T22:33:03.2470208Z             {
2026-07-26T22:33:03.2470332Z               "path": "crates/spt-live/src/resume.rs",
2026-07-26T22:33:03.2470414Z               "line": 57
2026-07-26T22:33:03.2470505Z             },
2026-07-26T22:33:03.2470580Z             {
2026-07-26T22:33:03.2470700Z               "path": "crates/spt-live/src/resume.rs",
2026-07-26T22:33:03.2470781Z               "line": 108
2026-07-26T22:33:03.2470866Z             },
2026-07-26T22:33:03.2470947Z             {
2026-07-26T22:33:03.2471063Z               "path": "crates/spt-live/src/resume.rs",
2026-07-26T22:33:03.2471378Z               "line": 114
2026-07-26T22:33:03.2471467Z             },
2026-07-26T22:33:03.2471548Z             {
2026-07-26T22:33:03.2471673Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.2471754Z               "line": 710
2026-07-26T22:33:03.2471829Z             }
2026-07-26T22:33:03.2471915Z           ]
2026-07-26T22:33:03.2471993Z         },
2026-07-26T22:33:03.2472073Z         "int": {
2026-07-26T22:33:03.2472167Z           "complete": true,
2026-07-26T22:33:03.2472262Z           "evidence": [
2026-07-26T22:33:03.2472339Z             {
2026-07-26T22:33:03.2472465Z               "path": "crates/spt/tests/psyche_download_e2e.rs",
2026-07-26T22:33:03.2472550Z               "line": 40
2026-07-26T22:33:03.2472622Z             }
2026-07-26T22:33:03.2472704Z           ]
2026-07-26T22:33:03.2472780Z         },
2026-07-26T22:33:03.2472860Z         "unit": {
2026-07-26T22:33:03.2472952Z           "complete": true,
2026-07-26T22:33:03.2473047Z           "evidence": [
2026-07-26T22:33:03.2473123Z             {
2026-07-26T22:33:03.2473242Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:03.2473324Z               "line": 336
2026-07-26T22:33:03.2473409Z             },
2026-07-26T22:33:03.2473485Z             {
2026-07-26T22:33:03.2473596Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:03.2473686Z               "line": 349
2026-07-26T22:33:03.2473767Z             },
2026-07-26T22:33:03.2473848Z             {
2026-07-26T22:33:03.2473968Z               "path": "crates/spt-live/src/resume.rs",
2026-07-26T22:33:03.2474053Z               "line": 205
2026-07-26T22:33:03.2474134Z             },
2026-07-26T22:33:03.2474216Z             {
2026-07-26T22:33:03.2474325Z               "path": "crates/spt-live/src/resume.rs",
2026-07-26T22:33:03.2474406Z               "line": 247
2026-07-26T22:33:03.2474497Z             },
2026-07-26T22:33:03.2474578Z             {
2026-07-26T22:33:03.2474720Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:03.2474817Z               "line": 872
2026-07-26T22:33:03.2474903Z             }
2026-07-26T22:33:03.2475011Z           ]
2026-07-26T22:33:03.2475115Z         }
2026-07-26T22:33:03.2475210Z       }
2026-07-26T22:33:03.2475288Z     },
2026-07-26T22:33:03.2475373Z     {
2026-07-26T22:33:03.2475482Z       "id": "REQ-RESUME-CUSTODY-IDENTITY",
2026-07-26T22:33:03.2479628Z       "title": "Resume custody is an identity pair (pid + process creation time), never a bare PID. (ADR-0047 decision 1; hertz v0.39.4 field bug 1, RCA accepted 2026-07-22.) TODAY: livehost's restart gate and liveness-reconcile DEFER both consume `read_resume_pid(..).is_some_and(is_process_alive)` — zero identity binding, so a dead wake-resume spawn's pid recycled onto an unrelated process (field: resume.pid=29456 -> cmd.exe) reads as a live resume forever: reconcile defers every tick, the row stays online-authoritative, FALSE-ONLINE with no self-repair. FIX: the custody record stores (pid, creation_time) written atomically at spawn-mint; every consumer tests the PAIR; mismatch = NOT OURS -> the discovering reader DELETES the record and proceeds (self-heal, not error); successful bind and spawn-reap clear custody atomically with their own outcome. Creation time from the process SNAPSHOT, never a retained handle (KH 7.50); platform without a snapshot -> unproven -> defer one tick, never a manufactured verdict. Gate: impl — the paired custody record + both livehost consumers on the pair test; unit — pair mismatch reads NOT-OURS + record deleted, pair match reads OURS, absent-snapshot defers; int — the recycled-pid rig: mint custody, kill the spawn, occupy the pid with an impostor, prove reconcile deletes custody and the row goes honest (the bug-1 field shape, RED-first against the bare-PID gate).",
2026-07-26T22:33:03.2479948Z       "requiredStages": [
2026-07-26T22:33:03.2480029Z         "impl",
2026-07-26T22:33:03.2480118Z         "unit",
2026-07-26T22:33:03.2480194Z         "int"
2026-07-26T22:33:03.2480275Z       ],
2026-07-26T22:33:03.2480356Z       "stages": {
2026-07-26T22:33:03.2480440Z         "doc": {
2026-07-26T22:33:03.2480530Z           "complete": true,
2026-07-26T22:33:03.2480616Z           "evidence": [
2026-07-26T22:33:03.2480693Z             {
2026-07-26T22:33:03.2480859Z               "path": "docs/adr/0047-daemon-lifecycle-custody-authority.md",
2026-07-26T22:33:03.2480945Z               "line": 53
2026-07-26T22:33:03.2481026Z             }
2026-07-26T22:33:03.2481107Z           ]
2026-07-26T22:33:03.2481197Z         },
2026-07-26T22:33:03.2481270Z         "impl": {
2026-07-26T22:33:03.2481365Z           "complete": true,
2026-07-26T22:33:03.2481440Z           "evidence": [
2026-07-26T22:33:03.2481521Z             {
2026-07-26T22:33:03.2481642Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.2481737Z               "line": 302
2026-07-26T22:33:03.2481817Z             },
2026-07-26T22:33:03.2481899Z             {
2026-07-26T22:33:03.2482013Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.2482122Z               "line": 376
2026-07-26T22:33:03.2482219Z             },
2026-07-26T22:33:03.2482290Z             {
2026-07-26T22:33:03.2482418Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.2482500Z               "line": 468
2026-07-26T22:33:03.2482591Z             },
2026-07-26T22:33:03.2482680Z             {
2026-07-26T22:33:03.2482793Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.2482889Z               "line": 581
2026-07-26T22:33:03.2482978Z             },
2026-07-26T22:33:03.2483054Z             {
2026-07-26T22:33:03.2483178Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.2483260Z               "line": 833
2026-07-26T22:33:03.2483345Z             },
2026-07-26T22:33:03.2483420Z             {
2026-07-26T22:33:03.2483541Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.2483622Z               "line": 889
2026-07-26T22:33:03.2483707Z             },
2026-07-26T22:33:03.2483793Z             {
2026-07-26T22:33:03.2483908Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.2483989Z               "line": 512
2026-07-26T22:33:03.2484069Z             },
2026-07-26T22:33:03.2484152Z             {
2026-07-26T22:33:03.2484265Z               "path": "crates/spt-store/src/proc.rs",
2026-07-26T22:33:03.2484350Z               "line": 597
2026-07-26T22:33:03.2484432Z             },
2026-07-26T22:33:03.2484594Z             {
2026-07-26T22:33:03.2484732Z               "path": "crates/spt-store/src/resume_custody.rs",
2026-07-26T22:33:03.2484805Z               "line": 41
2026-07-26T22:33:03.2484889Z             },
2026-07-26T22:33:03.2484971Z             {
2026-07-26T22:33:03.2485096Z               "path": "crates/spt-store/src/resume_custody.rs",
2026-07-26T22:33:03.2485181Z               "line": 106
2026-07-26T22:33:03.2485275Z             },
2026-07-26T22:33:03.2485362Z             {
2026-07-26T22:33:03.2485487Z               "path": "crates/spt-store/src/resume_custody.rs",
2026-07-26T22:33:03.2485566Z               "line": 136
2026-07-26T22:33:03.2485646Z             },
2026-07-26T22:33:03.2485723Z             {
2026-07-26T22:33:03.2485853Z               "path": "crates/spt-store/src/resume_custody.rs",
2026-07-26T22:33:03.2485965Z               "line": 179
2026-07-26T22:33:03.2486196Z             },
2026-07-26T22:33:03.2486280Z             {
2026-07-26T22:33:03.2486548Z               "path": "crates/spt-store/src/resume_custody.rs",
2026-07-26T22:33:03.2486843Z               "line": 186
2026-07-26T22:33:03.2487026Z             },
2026-07-26T22:33:03.2487187Z             {
2026-07-26T22:33:03.2487369Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.2487616Z               "line": 896
2026-07-26T22:33:03.2487802Z             }
2026-07-26T22:33:03.2487963Z           ]
2026-07-26T22:33:03.2488114Z         },
2026-07-26T22:33:03.2488270Z         "int": {
2026-07-26T22:33:03.2488447Z           "complete": true,
2026-07-26T22:33:03.2488643Z           "evidence": [
2026-07-26T22:33:03.2488819Z             {
2026-07-26T22:33:03.2489176Z               "path": "crates/spt-daemon/tests/endpoint_lifecycle.rs",
2026-07-26T22:33:03.2489500Z               "line": 472
2026-07-26T22:33:03.2489687Z             },
2026-07-26T22:33:03.2489849Z             {
2026-07-26T22:33:03.2490058Z               "path": "crates/spt-daemon/tests/resume_custody_aba.rs",
2026-07-26T22:33:03.2490326Z               "line": 127
2026-07-26T22:33:03.2490513Z             },
2026-07-26T22:33:03.2490664Z             {
2026-07-26T22:33:03.2490878Z               "path": "crates/spt-daemon/tests/resume_custody_aba.rs",
2026-07-26T22:33:03.2491137Z               "line": 181
2026-07-26T22:33:03.2491320Z             }
2026-07-26T22:33:03.2491481Z           ]
2026-07-26T22:33:03.2491635Z         },
2026-07-26T22:33:03.2491796Z         "unit": {
2026-07-26T22:33:03.2491977Z           "complete": true,
2026-07-26T22:33:03.2492173Z           "evidence": [
2026-07-26T22:33:03.2492373Z             {
2026-07-26T22:33:03.2492573Z               "path": "crates/spt-store/src/resume_custody.rs",
2026-07-26T22:33:03.2492832Z               "line": 225
2026-07-26T22:33:03.2493017Z             },
2026-07-26T22:33:03.2493179Z             {
2026-07-26T22:33:03.2493387Z               "path": "crates/spt-store/src/resume_custody.rs",
2026-07-26T22:33:03.2493642Z               "line": 248
2026-07-26T22:33:03.2493863Z             },
2026-07-26T22:33:03.2494024Z             {
2026-07-26T22:33:03.2494229Z               "path": "crates/spt-store/src/resume_custody.rs",
2026-07-26T22:33:03.2494477Z               "line": 282
2026-07-26T22:33:03.2494653Z             },
2026-07-26T22:33:03.2494815Z             {
2026-07-26T22:33:03.2495021Z               "path": "crates/spt-store/src/resume_custody.rs",
2026-07-26T22:33:03.2495268Z               "line": 309
2026-07-26T22:33:03.2495454Z             },
2026-07-26T22:33:03.2495627Z             {
2026-07-26T22:33:03.2495831Z               "path": "crates/spt-store/src/resume_custody.rs",
2026-07-26T22:33:03.2496084Z               "line": 336
2026-07-26T22:33:03.2496259Z             },
2026-07-26T22:33:03.2496413Z             {
2026-07-26T22:33:03.2496617Z               "path": "crates/spt-store/src/resume_custody.rs",
2026-07-26T22:33:03.2496864Z               "line": 359
2026-07-26T22:33:03.2497051Z             }
2026-07-26T22:33:03.2497213Z           ]
2026-07-26T22:33:03.2497376Z         }
2026-07-26T22:33:03.2497527Z       }
2026-07-26T22:33:03.2497842Z     },
2026-07-26T22:33:03.2497996Z     {
2026-07-26T22:33:03.2498176Z       "id": "REQ-RESUME-HARNESS-SESSION-ID",
2026-07-26T22:33:03.2500952Z       "title": "B2 (F028, hall-b diagnosis, verified 0.22.0): respawn/`--resume` feeds the SPT session id to `claude -r`. After the 02:05 daemon bounce respawn built `claude.exe -r 70b5bfa40901b7d4` — an spt session id in claude's OWN session-id namespace -> claude hangs forever at a 'No sessions match' resume-picker while the endpoint reads online. Hits after EVERY daemon bounce + every picker Resume. The HARNESS session id (claude UUID, stamped in sessions.log/info.json by the hooks) is what {session_id} must mean in the adapter's [session.resume] command; the spt sid must not leak. FIX: substitute the HARNESS session id in the resume template (spt-core substitution-key semantics + LIKELY claude-spt manifest coordination — FLAG perri BEFORE touching the manifest, adapter-boundary rule). Int: resume template receives the ledger UUID, not the spt sid. See triage B2.",
2026-07-26T22:33:03.2503320Z       "requiredStages": [
2026-07-26T22:33:03.2503500Z         "impl",
2026-07-26T22:33:03.2503659Z         "unit"
2026-07-26T22:33:03.2503819Z       ],
2026-07-26T22:33:03.2503971Z       "stages": {
2026-07-26T22:33:03.2504131Z         "doc": {
2026-07-26T22:33:03.2504307Z           "complete": false,
2026-07-26T22:33:03.2504507Z           "evidence": []
2026-07-26T22:33:03.2504694Z         },
2026-07-26T22:33:03.2504865Z         "impl": {
2026-07-26T22:33:03.2505037Z           "complete": true,
2026-07-26T22:33:03.2505223Z           "evidence": [
2026-07-26T22:33:03.2505399Z             {
2026-07-26T22:33:03.2505591Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2505829Z               "line": 1869
2026-07-26T22:33:03.2506009Z             },
2026-07-26T22:33:03.2506177Z             {
2026-07-26T22:33:03.2506372Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2506607Z               "line": 1889
2026-07-26T22:33:03.2506795Z             }
2026-07-26T22:33:03.2506959Z           ]
2026-07-26T22:33:03.2507129Z         },
2026-07-26T22:33:03.2507292Z         "int": {
2026-07-26T22:33:03.2507468Z           "complete": false,
2026-07-26T22:33:03.2507668Z           "evidence": []
2026-07-26T22:33:03.2507855Z         },
2026-07-26T22:33:03.2508011Z         "unit": {
2026-07-26T22:33:03.2508184Z           "complete": true,
2026-07-26T22:33:03.2508378Z           "evidence": [
2026-07-26T22:33:03.2508556Z             {
2026-07-26T22:33:03.2508756Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.2509159Z               "line": 385
2026-07-26T22:33:03.2509371Z             },
2026-07-26T22:33:03.2509554Z             {
2026-07-26T22:33:03.2509744Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2509986Z               "line": 2572
2026-07-26T22:33:03.2510173Z             }
2026-07-26T22:33:03.2510325Z           ]
2026-07-26T22:33:03.2510469Z         }
2026-07-26T22:33:03.2510640Z       }
2026-07-26T22:33:03.2510788Z     },
2026-07-26T22:33:03.2510931Z     {
2026-07-26T22:33:03.2511117Z       "id": "REQ-RESUME-REAP-PRIOR-HARNESS",
2026-07-26T22:33:03.2512287Z       "title": "B4 (F028, hall-b diagnosis, verified 0.22.0): `--resume` respawns a SECOND harness onto the SAME session without reaping the first. Observed live: resume of b4421cf9 spawned pid 34432 while gen1 (250376) kept running — two claude.exe stacks, one session id. FIX: resume must reap/refuse when the session already has a live harness. See triage B4.",
2026-07-26T22:33:03.2513313Z       "requiredStages": [
2026-07-26T22:33:03.2513536Z         "impl",
2026-07-26T22:33:03.2513693Z         "unit",
2026-07-26T22:33:03.2513851Z         "int"
2026-07-26T22:33:03.2514008Z       ],
2026-07-26T22:33:03.2514166Z       "stages": {
2026-07-26T22:33:03.2514333Z         "doc": {
2026-07-26T22:33:03.2514536Z           "complete": false,
2026-07-26T22:33:03.2514739Z           "evidence": []
2026-07-26T22:33:03.2514921Z         },
2026-07-26T22:33:03.2515240Z         "impl": {
2026-07-26T22:33:03.2515416Z           "complete": true,
2026-07-26T22:33:03.2515597Z           "evidence": [
2026-07-26T22:33:03.2515768Z             {
2026-07-26T22:33:03.2515955Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2516180Z               "line": 1937
2026-07-26T22:33:03.2516365Z             },
2026-07-26T22:33:03.2516533Z             {
2026-07-26T22:33:03.2516713Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2516922Z               "line": 2134
2026-07-26T22:33:03.2517105Z             }
2026-07-26T22:33:03.2517275Z           ]
2026-07-26T22:33:03.2517442Z         },
2026-07-26T22:33:03.2517589Z         "int": {
2026-07-26T22:33:03.2517761Z           "complete": true,
2026-07-26T22:33:03.2517956Z           "evidence": [
2026-07-26T22:33:03.2518129Z             {
2026-07-26T22:33:03.2518448Z               "path": "crates/spt/tests/run_no_dup_session_e2e.rs",
2026-07-26T22:33:03.2518706Z               "line": 311
2026-07-26T22:33:03.2518886Z             }
2026-07-26T22:33:03.2519182Z           ]
2026-07-26T22:33:03.2519345Z         },
2026-07-26T22:33:03.2519506Z         "unit": {
2026-07-26T22:33:03.2524211Z           "complete": true,
2026-07-26T22:33:03.2524469Z           "evidence": [
2026-07-26T22:33:03.2524659Z             {
2026-07-26T22:33:03.2524860Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2525101Z               "line": 2612
2026-07-26T22:33:03.2525280Z             }
2026-07-26T22:33:03.2525442Z           ]
2026-07-26T22:33:03.2525604Z         }
2026-07-26T22:33:03.2525752Z       }
2026-07-26T22:33:03.2525910Z     },
2026-07-26T22:33:03.2526053Z     {
2026-07-26T22:33:03.2526234Z       "id": "REQ-RESUME-ROW-PER-PROJECT",
2026-07-26T22:33:03.2527535Z       "title": "A5 (F028, operator #6): resume-from-history labels EVERY session with the endpoint's newest project. data.rs:480-496 resume_rows_for clones project_history.first() onto every ResumeRow (line 481/488), so all sessions read as the head project (the ghost). The per-row e.cwd is already carried for launch-into-dir. FIX: derive per-row project_id_for_dir(e.cwd) (owlery-excluded -> fall back to trigger token), rendered through A1's display-name path. See triage A5.",
2026-07-26T22:33:03.2529323Z       "requiredStages": [
2026-07-26T22:33:03.2529532Z         "impl",
2026-07-26T22:33:03.2529699Z         "unit"
2026-07-26T22:33:03.2529856Z       ],
2026-07-26T22:33:03.2530023Z       "stages": {
2026-07-26T22:33:03.2530184Z         "doc": {
2026-07-26T22:33:03.2530359Z           "complete": false,
2026-07-26T22:33:03.2530564Z           "evidence": []
2026-07-26T22:33:03.2530749Z         },
2026-07-26T22:33:03.2530907Z         "impl": {
2026-07-26T22:33:03.2531074Z           "complete": true,
2026-07-26T22:33:03.2531260Z           "evidence": [
2026-07-26T22:33:03.2531440Z             {
2026-07-26T22:33:03.2531632Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.2531871Z               "line": 505
2026-07-26T22:33:03.2532065Z             }
2026-07-26T22:33:03.2532214Z           ]
2026-07-26T22:33:03.2532376Z         },
2026-07-26T22:33:03.2532538Z         "int": {
2026-07-26T22:33:03.2532714Z           "complete": false,
2026-07-26T22:33:03.2532909Z           "evidence": []
2026-07-26T22:33:03.2533089Z         },
2026-07-26T22:33:03.2533250Z         "unit": {
2026-07-26T22:33:03.2533426Z           "complete": true,
2026-07-26T22:33:03.2533621Z           "evidence": [
2026-07-26T22:33:03.2533803Z             {
2026-07-26T22:33:03.2533997Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.2534232Z               "line": 1050
2026-07-26T22:33:03.2534418Z             }
2026-07-26T22:33:03.2534580Z           ]
2026-07-26T22:33:03.2534738Z         }
2026-07-26T22:33:03.2534885Z       }
2026-07-26T22:33:03.2535039Z     },
2026-07-26T22:33:03.2535199Z     {
2026-07-26T22:33:03.2535382Z       "id": "REQ-RESUME-UNBOUND-STAMP",
2026-07-26T22:33:03.2538738Z       "title": "RC-RENDER-TRUTH W1 (ADR-0042 decision 2, operator-spotted second root seam): resume launch transitions an existing offline perch to UNBOUND before/with the broker spawn — UNBOUND semantics are fresh/resume-invariant (broker session exists + harness not bound = UNBOUND); generation/session-safe ROLLBACK to offline on spawn failure or session death; bind owns UNBOUND->ONLINE. Supersedes the rc.rs 'resume gets no UNBOUND stamp — accepted' boundary note (the pre-bind window can be PERMANENT: stuck native resume, SessionStart never fires — field-proven; truthful UNBOUND is the operator-recovery surface that let `spt rc` reach the wedged TUI). Writer-truth complement to REQ-RC-HONEST-SESSION-AUTHORITY — both land, neither substitutes. Gate: impl — UNBOUND stamp at resume spawn + rollback + bind transition; unit — stamp fires on existing-offline perch resume, rollback on spawn-fail restores offline, generation guard refuses a stale rollback over a newer bind; int — resumed-but-never-bound endpoint reads UNBOUND (not offline) and `spt rc` attaches to its live session; doc — ADR-0042.",
2026-07-26T22:33:03.2542234Z       "requiredStages": [
2026-07-26T22:33:03.2542450Z         "doc",
2026-07-26T22:33:03.2542616Z         "impl",
2026-07-26T22:33:03.2542779Z         "unit",
2026-07-26T22:33:03.2542940Z         "int"
2026-07-26T22:33:03.2543140Z       ],
2026-07-26T22:33:03.2543294Z       "stages": {
2026-07-26T22:33:03.2543465Z         "doc": {
2026-07-26T22:33:03.2543635Z           "complete": true,
2026-07-26T22:33:03.2543862Z           "evidence": [
2026-07-26T22:33:03.2544034Z             {
2026-07-26T22:33:03.2544219Z               "path": "docs/adr/0042-rc-attach-truth.md",
2026-07-26T22:33:03.2544468Z               "line": 53
2026-07-26T22:33:03.2544650Z             }
2026-07-26T22:33:03.2544801Z           ]
2026-07-26T22:33:03.2544955Z         },
2026-07-26T22:33:03.2545112Z         "impl": {
2026-07-26T22:33:03.2545298Z           "complete": true,
2026-07-26T22:33:03.2545483Z           "evidence": [
2026-07-26T22:33:03.2545661Z             {
2026-07-26T22:33:03.2545851Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.2546097Z               "line": 419
2026-07-26T22:33:03.2546283Z             },
2026-07-26T22:33:03.2546442Z             {
2026-07-26T22:33:03.2546630Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.2546858Z               "line": 440
2026-07-26T22:33:03.2547039Z             },
2026-07-26T22:33:03.2547202Z             {
2026-07-26T22:33:03.2547382Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2547621Z               "line": 2236
2026-07-26T22:33:03.2547802Z             },
2026-07-26T22:33:03.2547969Z             {
2026-07-26T22:33:03.2548151Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2548374Z               "line": 2282
2026-07-26T22:33:03.2548551Z             },
2026-07-26T22:33:03.2548718Z             {
2026-07-26T22:33:03.2548890Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2549265Z               "line": 2331
2026-07-26T22:33:03.2549461Z             }
2026-07-26T22:33:03.2549627Z           ]
2026-07-26T22:33:03.2549786Z         },
2026-07-26T22:33:03.2549951Z         "int": {
2026-07-26T22:33:03.2550124Z           "complete": true,
2026-07-26T22:33:03.2550314Z           "evidence": [
2026-07-26T22:33:03.2550500Z             {
2026-07-26T22:33:03.2550692Z               "path": "crates/spt/tests/rc_attach_truth.rs",
2026-07-26T22:33:03.2550943Z               "line": 438
2026-07-26T22:33:03.2551125Z             }
2026-07-26T22:33:03.2551285Z           ]
2026-07-26T22:33:03.2551433Z         },
2026-07-26T22:33:03.2551593Z         "unit": {
2026-07-26T22:33:03.2551766Z           "complete": true,
2026-07-26T22:33:03.2551960Z           "evidence": [
2026-07-26T22:33:03.2552137Z             {
2026-07-26T22:33:03.2552324Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.2552556Z               "line": 1070
2026-07-26T22:33:03.2552733Z             },
2026-07-26T22:33:03.2552890Z             {
2026-07-26T22:33:03.2553268Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.2553529Z               "line": 1106
2026-07-26T22:33:03.2553700Z             }
2026-07-26T22:33:03.2553854Z           ]
2026-07-26T22:33:03.2554029Z         }
2026-07-26T22:33:03.2554181Z       }
2026-07-26T22:33:03.2554337Z     },
2026-07-26T22:33:03.2554518Z     {
2026-07-26T22:33:03.2554703Z       "id": "REQ-RUN-EMPTY-CREATE",
2026-07-26T22:33:03.2556235Z       "title": "`spt endpoint run` / bare `spt` routes a TOTALLY-EMPTY scope straight to the endpoint-creation flow: when gather_endpoints() is empty (nothing attachable, local OR subnet) PickerModel::new opens on Screen::CreateAdapter instead of PickExisting (today it always opens PickExisting + renders a blank list). A node WITH subnet endpoints but no local ones still has things to pick → stays on the picker. Extends REQ-RUN-PICKER. (v0.16.0)",
2026-07-26T22:33:03.2557590Z       "requiredStages": [
2026-07-26T22:33:03.2557781Z         "impl",
2026-07-26T22:33:03.2557957Z         "unit"
2026-07-26T22:33:03.2558124Z       ],
2026-07-26T22:33:03.2558286Z       "stages": {
2026-07-26T22:33:03.2558453Z         "doc": {
2026-07-26T22:33:03.2558634Z           "complete": false,
2026-07-26T22:33:03.2558825Z           "evidence": []
2026-07-26T22:33:03.2559116Z         },
2026-07-26T22:33:03.2559317Z         "impl": {
2026-07-26T22:33:03.2559492Z           "complete": true,
2026-07-26T22:33:03.2559682Z           "evidence": [
2026-07-26T22:33:03.2559858Z             {
2026-07-26T22:33:03.2560064Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2560298Z               "line": 917
2026-07-26T22:33:03.2560479Z             }
2026-07-26T22:33:03.2560641Z           ]
2026-07-26T22:33:03.2560794Z         },
2026-07-26T22:33:03.2560951Z         "int": {
2026-07-26T22:33:03.2561132Z           "complete": false,
2026-07-26T22:33:03.2561342Z           "evidence": []
2026-07-26T22:33:03.2561523Z         },
2026-07-26T22:33:03.2561676Z         "unit": {
2026-07-26T22:33:03.2561859Z           "complete": true,
2026-07-26T22:33:03.2562053Z           "evidence": [
2026-07-26T22:33:03.2562229Z             {
2026-07-26T22:33:03.2562420Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2562649Z               "line": 2210
2026-07-26T22:33:03.2562835Z             }
2026-07-26T22:33:03.2562998Z           ]
2026-07-26T22:33:03.2563150Z         }
2026-07-26T22:33:03.2563312Z       }
2026-07-26T22:33:03.2563464Z     },
2026-07-26T22:33:03.2563626Z     {
2026-07-26T22:33:03.2563804Z       "id": "REQ-RUN-ID-REUSES-ADAPTER",
2026-07-26T22:33:03.2567998Z       "title": "D-1 (REMOTE-TRUTH triage §D-1): `spt endpoint run --id <id>` with NO --adapter, when <id> names an EXISTING perch, REUSES that perch's recorded info.adapter and runs NON-INTERACTIVELY — instead of always falling to the picker as a create-new prefill (an existing endpoint retyping its own adapter, or being sent to a create-new flow, is the operator wart). ROOT (certain, no design tension): the cli `match (adapter,id)` special-cased only (Some,Some)→cmd_endpoint_run; the catch-all routed EVERY lone --id to crate::picker::run as a create-new prefill, never considering an existing endpoint (cli.rs ~1290). FIX: a PURE resolve_run_target(adapter, id, recorded) over the 4 (adapter?,id?) quadrants — (Some,Some)→Direct{a,id}; (None,Some(id))→ recorded adapter present (info.adapter = adapter-chosen-at-creation, spt-store info.rs:167) → Direct{recorded,id}, absent/no-perch → Picker{None,Some(id)} (today's create-new prefill UNCHANGED); (Some,None)/(None,None)→Picker unchanged. The perch lookup (read_info(resolve_perch_path(id,Infer)).adapter) is INJECTED as a closure so the router is pure + testable without a perch on disk; resume threads into BOTH Direct paths. Red-first: (None,Some(id),recorded=Some) → Direct (pre-fix this routed to Picker create-new). int (live run --id on an existing perch reuses its recorded adapter non-interactively) deferred to the rig.",
2026-07-26T22:33:03.2571773Z       "requiredStages": [
2026-07-26T22:33:03.2572088Z         "impl",
2026-07-26T22:33:03.2572254Z         "unit"
2026-07-26T22:33:03.2572419Z       ],
2026-07-26T22:33:03.2572586Z       "stages": {
2026-07-26T22:33:03.2572741Z         "doc": {
2026-07-26T22:33:03.2572915Z           "complete": false,
2026-07-26T22:33:03.2573119Z           "evidence": []
2026-07-26T22:33:03.2573304Z         },
2026-07-26T22:33:03.2573468Z         "impl": {
2026-07-26T22:33:03.2573643Z           "complete": true,
2026-07-26T22:33:03.2573834Z           "evidence": [
2026-07-26T22:33:03.2574020Z             {
2026-07-26T22:33:03.2574196Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2574441Z               "line": 1425
2026-07-26T22:33:03.2574630Z             },
2026-07-26T22:33:03.2574798Z             {
2026-07-26T22:33:03.2574984Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2575330Z               "line": 1963
2026-07-26T22:33:03.2575509Z             }
2026-07-26T22:33:03.2575671Z           ]
2026-07-26T22:33:03.2575833Z         },
2026-07-26T22:33:03.2575996Z         "int": {
2026-07-26T22:33:03.2576171Z           "complete": false,
2026-07-26T22:33:03.2576373Z           "evidence": []
2026-07-26T22:33:03.2576553Z         },
2026-07-26T22:33:03.2576711Z         "unit": {
2026-07-26T22:33:03.2576877Z           "complete": true,
2026-07-26T22:33:03.2577068Z           "evidence": [
2026-07-26T22:33:03.2577250Z             {
2026-07-26T22:33:03.2577435Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2577660Z               "line": 1987
2026-07-26T22:33:03.2577844Z             }
2026-07-26T22:33:03.2578010Z           ]
2026-07-26T22:33:03.2578170Z         }
2026-07-26T22:33:03.2578329Z       }
2026-07-26T22:33:03.2578485Z     },
2026-07-26T22:33:03.2578644Z     {
2026-07-26T22:33:03.2578819Z       "id": "REQ-RUN-MULTISUBNET-HOME",
2026-07-26T22:33:03.2581780Z       "title": "`spt endpoint run` resolves the home subnet at the skeleton-create step and pre-creates the skeleton perch carrying it, so the harness `bind` inherits home via establish_perch's immutable prior-branch (no hook change, no env injection). Resolution: sole-subnet auto; multi-subnet + no --subnet + NON-interactive terminal -> refuse early with MRU-ordered --subnet guidance (never the silent 25s online-timeout); multi-subnet + no --subnet + INTERACTIVE -> print proposed config (id/project/adapter[:profile]/home=MRU-default) + 'Ok to proceed? Y/n', n -> --subnet guidance; --subnet overrides + validates membership. MRU = ordered move-to-front LISTs at two levels (per-project + always-updated node-global fallback). Home stays IMMUTABLE (ADR-0010). Fixes the LATENT multi-subnet bringup gap (perri, not a regression — HOME_REFUSED established >=0.11.0; exposed by the node crossing 1->2 subnets). (ADR-0026)",
2026-07-26T22:33:03.2584142Z       "requiredStages": [
2026-07-26T22:33:03.2584328Z         "doc",
2026-07-26T22:33:03.2584504Z         "impl",
2026-07-26T22:33:03.2584667Z         "unit",
2026-07-26T22:33:03.2584832Z         "int"
2026-07-26T22:33:03.2585010Z       ],
2026-07-26T22:33:03.2585166Z       "stages": {
2026-07-26T22:33:03.2585330Z         "doc": {
2026-07-26T22:33:03.2585495Z           "complete": true,
2026-07-26T22:33:03.2585687Z           "evidence": [
2026-07-26T22:33:03.2585866Z             {
2026-07-26T22:33:03.2586131Z               "path": "docs/adr/0026-multi-subnet-home-at-endpoint-run-creation.md",
2026-07-26T22:33:03.2586450Z               "line": 3
2026-07-26T22:33:03.2586623Z             }
2026-07-26T22:33:03.2586779Z           ]
2026-07-26T22:33:03.2586938Z         },
2026-07-26T22:33:03.2587103Z         "impl": {
2026-07-26T22:33:03.2587290Z           "complete": true,
2026-07-26T22:33:03.2587491Z           "evidence": [
2026-07-26T22:33:03.2587671Z             {
2026-07-26T22:33:03.2587873Z               "path": "crates/spt-store/src/recent_home.rs",
2026-07-26T22:33:03.2588130Z               "line": 16
2026-07-26T22:33:03.2588305Z             },
2026-07-26T22:33:03.2588471Z             {
2026-07-26T22:33:03.2588798Z               "path": "crates/spt-store/src/recent_home.rs",
2026-07-26T22:33:03.2589194Z               "line": 42
2026-07-26T22:33:03.2589384Z             },
2026-07-26T22:33:03.2589547Z             {
2026-07-26T22:33:03.2589743Z               "path": "crates/spt-store/src/recent_home.rs",
2026-07-26T22:33:03.2589985Z               "line": 50
2026-07-26T22:33:03.2590162Z             },
2026-07-26T22:33:03.2590328Z             {
2026-07-26T22:33:03.2590505Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2590736Z               "line": 2222
2026-07-26T22:33:03.2590906Z             },
2026-07-26T22:33:03.2591069Z             {
2026-07-26T22:33:03.2591247Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2591473Z               "line": 2392
2026-07-26T22:33:03.2591653Z             },
2026-07-26T22:33:03.2591949Z             {
2026-07-26T22:33:03.2592159Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2592402Z               "line": 2414
2026-07-26T22:33:03.2592583Z             },
2026-07-26T22:33:03.2592745Z             {
2026-07-26T22:33:03.2592917Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2593160Z               "line": 2436
2026-07-26T22:33:03.2593346Z             },
2026-07-26T22:33:03.2593517Z             {
2026-07-26T22:33:03.2593697Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2593925Z               "line": 2465
2026-07-26T22:33:03.2594105Z             }
2026-07-26T22:33:03.2594268Z           ]
2026-07-26T22:33:03.2594434Z         },
2026-07-26T22:33:03.2594597Z         "int": {
2026-07-26T22:33:03.2594777Z           "complete": true,
2026-07-26T22:33:03.2594974Z           "evidence": [
2026-07-26T22:33:03.2595150Z             {
2026-07-26T22:33:03.2595374Z               "path": "crates/spt/tests/multi_subnet_bringup_e2e.rs",
2026-07-26T22:33:03.2595650Z               "line": 208
2026-07-26T22:33:03.2595833Z             },
2026-07-26T22:33:03.2595993Z             {
2026-07-26T22:33:03.2596210Z               "path": "crates/spt/tests/multi_subnet_bringup_e2e.rs",
2026-07-26T22:33:03.2596488Z               "line": 291
2026-07-26T22:33:03.2596672Z             },
2026-07-26T22:33:03.2596835Z             {
2026-07-26T22:33:03.2597053Z               "path": "crates/spt/tests/multi_subnet_bringup_e2e.rs",
2026-07-26T22:33:03.2597320Z               "line": 297
2026-07-26T22:33:03.2597507Z             },
2026-07-26T22:33:03.2597668Z             {
2026-07-26T22:33:03.2597878Z               "path": "crates/spt/tests/multi_subnet_bringup_e2e.rs",
2026-07-26T22:33:03.2598146Z               "line": 308
2026-07-26T22:33:03.2598322Z             }
2026-07-26T22:33:03.2598485Z           ]
2026-07-26T22:33:03.2598642Z         },
2026-07-26T22:33:03.2598799Z         "unit": {
2026-07-26T22:33:03.2599070Z           "complete": true,
2026-07-26T22:33:03.2599344Z           "evidence": [
2026-07-26T22:33:03.2599534Z             {
2026-07-26T22:33:03.2599726Z               "path": "crates/spt-store/src/recent_home.rs",
2026-07-26T22:33:03.2599983Z               "line": 115
2026-07-26T22:33:03.2600159Z             },
2026-07-26T22:33:03.2600308Z             {
2026-07-26T22:33:03.2600511Z               "path": "crates/spt-store/src/recent_home.rs",
2026-07-26T22:33:03.2600755Z               "line": 137
2026-07-26T22:33:03.2600942Z             },
2026-07-26T22:33:03.2601098Z             {
2026-07-26T22:33:03.2601286Z               "path": "crates/spt-store/src/recent_home.rs",
2026-07-26T22:33:03.2601538Z               "line": 156
2026-07-26T22:33:03.2601718Z             },
2026-07-26T22:33:03.2601884Z             {
2026-07-26T22:33:03.2602080Z               "path": "crates/spt-store/src/recent_home.rs",
2026-07-26T22:33:03.2602319Z               "line": 170
2026-07-26T22:33:03.2602499Z             },
2026-07-26T22:33:03.2602672Z             {
2026-07-26T22:33:03.2602862Z               "path": "crates/spt-store/src/recent_home.rs",
2026-07-26T22:33:03.2603119Z               "line": 189
2026-07-26T22:33:03.2603300Z             },
2026-07-26T22:33:03.2603592Z             {
2026-07-26T22:33:03.2603787Z               "path": "crates/spt-store/src/recent_home.rs",
2026-07-26T22:33:03.2604033Z               "line": 198
2026-07-26T22:33:03.2604210Z             },
2026-07-26T22:33:03.2604365Z             {
2026-07-26T22:33:03.2604547Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2604775Z               "line": 2645
2026-07-26T22:33:03.2604957Z             },
2026-07-26T22:33:03.2605115Z             {
2026-07-26T22:33:03.2605290Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2605524Z               "line": 2695
2026-07-26T22:33:03.2605715Z             }
2026-07-26T22:33:03.2605872Z           ]
2026-07-26T22:33:03.2606034Z         }
2026-07-26T22:33:03.2606196Z       }
2026-07-26T22:33:03.2606349Z     },
2026-07-26T22:33:03.2606501Z     {
2026-07-26T22:33:03.2606784Z       "id": "REQ-RUN-NO-DUP-SESSION",
2026-07-26T22:33:03.2609610Z       "title": "B1 (F028, hall-b diagnosis, verified 0.22.0): `endpoint run --id X --create` on an endpoint with a LIVE session mints a silent DUPLICATE session — and attach output can CROSS sessions (second create for diag-hallc minted a new session while the old ran; the new run's attach viewport rendered the OLD session's screen — claude resume-picker UI of pid 84512 while new claude 356020 had no -r). ROOT CLASS of the 0.21.0 attach-stall (zero events in FIRST_EVENT_GRACE rc.rs:1402 = attach bound to dead/wrong same-id slot); also the triplicate `launch --id ball-b` on ENLYZEAM. FIX: (i) run-on-live-session must REFUSE or REATTACH, never silently duplicate; (ii) RCA the attach/output routing that let frames cross same-id sessions (broker session-slot keying, dispatch_adapter vs serve_attach resolution). Int: two sessions one endpoint id -> each attach sees only its own frames. See triage B1.",
2026-07-26T22:33:03.2611944Z       "requiredStages": [
2026-07-26T22:33:03.2612127Z         "impl",
2026-07-26T22:33:03.2612311Z         "unit",
2026-07-26T22:33:03.2612473Z         "int"
2026-07-26T22:33:03.2612697Z       ],
2026-07-26T22:33:03.2612874Z       "stages": {
2026-07-26T22:33:03.2613035Z         "doc": {
2026-07-26T22:33:03.2613227Z           "complete": false,
2026-07-26T22:33:03.2613422Z           "evidence": []
2026-07-26T22:33:03.2613598Z         },
2026-07-26T22:33:03.2613761Z         "impl": {
2026-07-26T22:33:03.2613927Z           "complete": true,
2026-07-26T22:33:03.2614128Z           "evidence": [
2026-07-26T22:33:03.2614304Z             {
2026-07-26T22:33:03.2614490Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2614723Z               "line": 1910
2026-07-26T22:33:03.2614902Z             },
2026-07-26T22:33:03.2615069Z             {
2026-07-26T22:33:03.2615245Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2615474Z               "line": 1936
2026-07-26T22:33:03.2615665Z             },
2026-07-26T22:33:03.2615836Z             {
2026-07-26T22:33:03.2616018Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2616251Z               "line": 2133
2026-07-26T22:33:03.2616432Z             }
2026-07-26T22:33:03.2616595Z           ]
2026-07-26T22:33:03.2616752Z         },
2026-07-26T22:33:03.2616953Z         "int": {
2026-07-26T22:33:03.2617128Z           "complete": true,
2026-07-26T22:33:03.2621895Z           "evidence": [
2026-07-26T22:33:03.2622157Z             {
2026-07-26T22:33:03.2622396Z               "path": "crates/spt/tests/run_no_dup_session_e2e.rs",
2026-07-26T22:33:03.2622663Z               "line": 284
2026-07-26T22:33:03.2622857Z             }
2026-07-26T22:33:03.2623028Z           ]
2026-07-26T22:33:03.2623181Z         },
2026-07-26T22:33:03.2623343Z         "unit": {
2026-07-26T22:33:03.2623524Z           "complete": true,
2026-07-26T22:33:03.2623725Z           "evidence": [
2026-07-26T22:33:03.2623910Z             {
2026-07-26T22:33:03.2624092Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2624336Z               "line": 2612
2026-07-26T22:33:03.2624516Z             }
2026-07-26T22:33:03.2624936Z           ]
2026-07-26T22:33:03.2625097Z         }
2026-07-26T22:33:03.2625254Z       }
2026-07-26T22:33:03.2625400Z     },
2026-07-26T22:33:03.2625562Z     {
2026-07-26T22:33:03.2625729Z       "id": "REQ-RUN-PICKER",
2026-07-26T22:33:03.2630726Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-07-26T22:33:03.2635052Z       "requiredStages": [
2026-07-26T22:33:03.2635249Z         "doc",
2026-07-26T22:33:03.2635419Z         "impl",
2026-07-26T22:33:03.2635587Z         "unit"
2026-07-26T22:33:03.2635766Z       ],
2026-07-26T22:33:03.2635867Z       "stages": {
2026-07-26T22:33:03.2635937Z         "doc": {
2026-07-26T22:33:03.2636622Z           "complete": true,
2026-07-26T22:33:03.2636727Z           "evidence": [
2026-07-26T22:33:03.2636810Z             {
2026-07-26T22:33:03.2636914Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.2637008Z               "line": 407
2026-07-26T22:33:03.2637086Z             }
2026-07-26T22:33:03.2637167Z           ]
2026-07-26T22:33:03.2637248Z         },
2026-07-26T22:33:03.2637342Z         "impl": {
2026-07-26T22:33:03.2637429Z           "complete": true,
2026-07-26T22:33:03.2637523Z           "evidence": [
2026-07-26T22:33:03.2637604Z             {
2026-07-26T22:33:03.2637720Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2637801Z               "line": 1212
2026-07-26T22:33:03.2639613Z             },
2026-07-26T22:33:03.2639696Z             {
2026-07-26T22:33:03.2639819Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2639909Z               "line": 1222
2026-07-26T22:33:03.2639996Z             },
2026-07-26T22:33:03.2640072Z             {
2026-07-26T22:33:03.2640195Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.2640277Z               "line": 9
2026-07-26T22:33:03.2640363Z             },
2026-07-26T22:33:03.2640448Z             {
2026-07-26T22:33:03.2640562Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.2640654Z               "line": 102
2026-07-26T22:33:03.2640739Z             },
2026-07-26T22:33:03.2640820Z             {
2026-07-26T22:33:03.2640940Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.2641026Z               "line": 16
2026-07-26T22:33:03.2641106Z             },
2026-07-26T22:33:03.2641186Z             {
2026-07-26T22:33:03.2641300Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.2641413Z               "line": 482
2026-07-26T22:33:03.2641498Z             },
2026-07-26T22:33:03.2641657Z             {
2026-07-26T22:33:03.2641775Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2641884Z               "line": 11
2026-07-26T22:33:03.2641976Z             },
2026-07-26T22:33:03.2642057Z             {
2026-07-26T22:33:03.2642175Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2642262Z               "line": 177
2026-07-26T22:33:03.2642347Z             },
2026-07-26T22:33:03.2642423Z             {
2026-07-26T22:33:03.2642539Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2642624Z               "line": 1086
2026-07-26T22:33:03.2642705Z             },
2026-07-26T22:33:03.2642785Z             {
2026-07-26T22:33:03.2642892Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2642982Z               "line": 1222
2026-07-26T22:33:03.2643173Z             },
2026-07-26T22:33:03.2643268Z             {
2026-07-26T22:33:03.2643368Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2643459Z               "line": 1346
2026-07-26T22:33:03.2643531Z             },
2026-07-26T22:33:03.2643616Z             {
2026-07-26T22:33:03.2643716Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2643803Z               "line": 1414
2026-07-26T22:33:03.2643884Z             },
2026-07-26T22:33:03.2643959Z             {
2026-07-26T22:33:03.2644067Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2644158Z               "line": 1457
2026-07-26T22:33:03.2644230Z             },
2026-07-26T22:33:03.2644311Z             {
2026-07-26T22:33:03.2644415Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.2644507Z               "line": 8
2026-07-26T22:33:03.2644583Z             }
2026-07-26T22:33:03.2644668Z           ]
2026-07-26T22:33:03.2644744Z         },
2026-07-26T22:33:03.2644836Z         "int": {
2026-07-26T22:33:03.2644936Z           "complete": false,
2026-07-26T22:33:03.2645021Z           "evidence": []
2026-07-26T22:33:03.2645103Z         },
2026-07-26T22:33:03.2645179Z         "unit": {
2026-07-26T22:33:03.2645265Z           "complete": true,
2026-07-26T22:33:03.2645360Z           "evidence": [
2026-07-26T22:33:03.2645446Z             {
2026-07-26T22:33:03.2645555Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2645636Z               "line": 15044
2026-07-26T22:33:03.2645718Z             },
2026-07-26T22:33:03.2645795Z             {
2026-07-26T22:33:03.2645898Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2645974Z               "line": 15055
2026-07-26T22:33:03.2646057Z             },
2026-07-26T22:33:03.2646133Z             {
2026-07-26T22:33:03.2646255Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2646335Z               "line": 2123
2026-07-26T22:33:03.2646427Z             },
2026-07-26T22:33:03.2646511Z             {
2026-07-26T22:33:03.2646739Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2646826Z               "line": 2184
2026-07-26T22:33:03.2646910Z             },
2026-07-26T22:33:03.2646987Z             {
2026-07-26T22:33:03.2647126Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2647206Z               "line": 2239
2026-07-26T22:33:03.2647287Z             },
2026-07-26T22:33:03.2647370Z             {
2026-07-26T22:33:03.2647484Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2647578Z               "line": 2248
2026-07-26T22:33:03.2647660Z             },
2026-07-26T22:33:03.2647746Z             {
2026-07-26T22:33:03.2647859Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2647950Z               "line": 2259
2026-07-26T22:33:03.2648079Z             },
2026-07-26T22:33:03.2648155Z             {
2026-07-26T22:33:03.2648255Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2648408Z               "line": 2281
2026-07-26T22:33:03.2648508Z             },
2026-07-26T22:33:03.2648585Z             {
2026-07-26T22:33:03.2648770Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2648856Z               "line": 2300
2026-07-26T22:33:03.2649033Z             },
2026-07-26T22:33:03.2649156Z             {
2026-07-26T22:33:03.2649289Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2649383Z               "line": 2412
2026-07-26T22:33:03.2649482Z             },
2026-07-26T22:33:03.2649577Z             {
2026-07-26T22:33:03.2649679Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2649773Z               "line": 2443
2026-07-26T22:33:03.2649849Z             },
2026-07-26T22:33:03.2649927Z             {
2026-07-26T22:33:03.2650027Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2650116Z               "line": 2570
2026-07-26T22:33:03.2650193Z             },
2026-07-26T22:33:03.2650398Z             {
2026-07-26T22:33:03.2650508Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2650594Z               "line": 2640
2026-07-26T22:33:03.2650670Z             },
2026-07-26T22:33:03.2650751Z             {
2026-07-26T22:33:03.2650900Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2650989Z               "line": 2831
2026-07-26T22:33:03.2651080Z             },
2026-07-26T22:33:03.2651181Z             {
2026-07-26T22:33:03.2651285Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2651375Z               "line": 2847
2026-07-26T22:33:03.2651452Z             },
2026-07-26T22:33:03.2651534Z             {
2026-07-26T22:33:03.2651637Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.2651732Z               "line": 841
2026-07-26T22:33:03.2651832Z             },
2026-07-26T22:33:03.2651931Z             {
2026-07-26T22:33:03.2652044Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.2652135Z               "line": 856
2026-07-26T22:33:03.2652217Z             },
2026-07-26T22:33:03.2652293Z             {
2026-07-26T22:33:03.2652406Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.2652498Z               "line": 893
2026-07-26T22:33:03.2652588Z             },
2026-07-26T22:33:03.2652674Z             {
2026-07-26T22:33:03.2652794Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.2652874Z               "line": 918
2026-07-26T22:33:03.2652965Z             },
2026-07-26T22:33:03.2653040Z             {
2026-07-26T22:33:03.2653146Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.2653227Z               "line": 928
2026-07-26T22:33:03.2653308Z             },
2026-07-26T22:33:03.2653384Z             {
2026-07-26T22:33:03.2653494Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.2653575Z               "line": 1084
2026-07-26T22:33:03.2653660Z             }
2026-07-26T22:33:03.2653738Z           ]
2026-07-26T22:33:03.2653908Z         }
2026-07-26T22:33:03.2653989Z       }
2026-07-26T22:33:03.2654067Z     },
2026-07-26T22:33:03.2654148Z     {
2026-07-26T22:33:03.2654262Z       "id": "REQ-RUN-PICKER-HOME",
2026-07-26T22:33:03.2657752Z       "title": "Home-subnet selection LAYER in the `spt endpoint run` ratatui Create-new picker (v0.14.1; the deferred half of REQ-RUN-MULTISUBNET-HOME's interactive path — ADR-0026 §3 'the interactive picker lists subnets MRU-ordered'). On a MULTI-SUBNET node the Create-new flow gains a `CreateHome` screen (CreateAdapter → CreateId → CreateHome → Confirm) that lists the node's MEMBER subnets MRU-ordered (reusing recent_home::mru_preference + order_by_mru), default cursor = MRU head; the chosen subnet rides Outcome::Run{subnet} into cmd_endpoint_run's --subnet, so decide_run_home resolves Home directly and the post-TUI `Ok to proceed? Y/n` confirm NEVER fires for the picker path. Single-subnet / local-only nodes SKIP the layer (assign_home auto-homes; CreateId → Confirm unchanged). The CLI / flagged `endpoint run` path KEEPS the decide_run_home Y/n confirm + the non-interactive MULTI_SUBNET_HOME refuse (operator: the confirm stays useful for CLI-only bringup, just not in the TUI). Esc backs CreateHome → CreateId; Enter selects → Confirm. Pure front-end invariant preserved: the layer only collects --subnet, routes through the one bringup core.",
﻿2026-07-26T22:33:03.2659251Z       "requiredStages": [
2026-07-26T22:33:03.2659325Z         "doc",
2026-07-26T22:33:03.2659426Z         "impl",
2026-07-26T22:33:03.2659508Z         "unit"
2026-07-26T22:33:03.2659598Z       ],
2026-07-26T22:33:03.2659678Z       "stages": {
2026-07-26T22:33:03.2659753Z         "doc": {
2026-07-26T22:33:03.2659849Z           "complete": true,
2026-07-26T22:33:03.2659943Z           "evidence": [
2026-07-26T22:33:03.2660023Z             {
2026-07-26T22:33:03.2660124Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.2660200Z               "line": 421
2026-07-26T22:33:03.2660277Z             }
2026-07-26T22:33:03.2660419Z           ]
2026-07-26T22:33:03.2660497Z         },
2026-07-26T22:33:03.2660577Z         "impl": {
2026-07-26T22:33:03.2660676Z           "complete": true,
2026-07-26T22:33:03.2660763Z           "evidence": [
2026-07-26T22:33:03.2660840Z             {
2026-07-26T22:33:03.2660958Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.2661053Z               "line": 51
2026-07-26T22:33:03.2661154Z             },
2026-07-26T22:33:03.2661234Z             {
2026-07-26T22:33:03.2661344Z               "path": "crates/spt/src/picker/mod.rs",
2026-07-26T22:33:03.2661474Z               "line": 516
2026-07-26T22:33:03.2661559Z             },
2026-07-26T22:33:03.2661640Z             {
2026-07-26T22:33:03.2661746Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2661831Z               "line": 1044
2026-07-26T22:33:03.2661906Z             },
2026-07-26T22:33:03.2661997Z             {
2026-07-26T22:33:03.2662104Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2662259Z               "line": 1060
2026-07-26T22:33:03.2662344Z             },
2026-07-26T22:33:03.2662431Z             {
2026-07-26T22:33:03.2662542Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.2662632Z               "line": 211
2026-07-26T22:33:03.2662714Z             }
2026-07-26T22:33:03.2662810Z           ]
2026-07-26T22:33:03.2662881Z         },
2026-07-26T22:33:03.2662971Z         "int": {
2026-07-26T22:33:03.2663067Z           "complete": false,
2026-07-26T22:33:03.2663163Z           "evidence": []
2026-07-26T22:33:03.2663243Z         },
2026-07-26T22:33:03.2663334Z         "unit": {
2026-07-26T22:33:03.2663425Z           "complete": true,
2026-07-26T22:33:03.2663501Z           "evidence": [
2026-07-26T22:33:03.2663572Z             {
2026-07-26T22:33:03.2663688Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.2663768Z               "line": 1434
2026-07-26T22:33:03.2663854Z             },
2026-07-26T22:33:03.2663925Z             {
2026-07-26T22:33:03.2664106Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2664183Z               "line": 2858
2026-07-26T22:33:03.2664279Z             },
2026-07-26T22:33:03.2664360Z             {
2026-07-26T22:33:03.2664473Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2664554Z               "line": 2885
2026-07-26T22:33:03.2664637Z             },
2026-07-26T22:33:03.2664717Z             {
2026-07-26T22:33:03.2664831Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2664923Z               "line": 2911
2026-07-26T22:33:03.2665004Z             },
2026-07-26T22:33:03.2665083Z             {
2026-07-26T22:33:03.2665192Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2665284Z               "line": 2934
2026-07-26T22:33:03.2665360Z             },
2026-07-26T22:33:03.2665436Z             {
2026-07-26T22:33:03.2665545Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.2665637Z               "line": 874
2026-07-26T22:33:03.2665713Z             }
2026-07-26T22:33:03.2665798Z           ]
2026-07-26T22:33:03.2665932Z         }
2026-07-26T22:33:03.2666022Z       }
2026-07-26T22:33:03.2666098Z     },
2026-07-26T22:33:03.2666175Z     {
2026-07-26T22:33:03.2666261Z       "id": "REQ-RUN-SHORTCUT",
2026-07-26T22:33:03.2671032Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-07-26T22:33:03.2671303Z       "requiredStages": [
2026-07-26T22:33:03.2671386Z         "doc",
2026-07-26T22:33:03.2671471Z         "impl",
2026-07-26T22:33:03.2671556Z         "unit"
2026-07-26T22:33:03.2671647Z       ],
2026-07-26T22:33:03.2671724Z       "stages": {
2026-07-26T22:33:03.2671809Z         "doc": {
2026-07-26T22:33:03.2671904Z           "complete": true,
2026-07-26T22:33:03.2671996Z           "evidence": [
2026-07-26T22:33:03.2672085Z             {
2026-07-26T22:33:03.2672185Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.2672282Z               "line": 455
2026-07-26T22:33:03.2672363Z             }
2026-07-26T22:33:03.2672442Z           ]
2026-07-26T22:33:03.2672524Z         },
2026-07-26T22:33:03.2672616Z         "impl": {
2026-07-26T22:33:03.2672706Z           "complete": true,
2026-07-26T22:33:03.2672786Z           "evidence": [
2026-07-26T22:33:03.2672861Z             {
2026-07-26T22:33:03.2672995Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-07-26T22:33:03.2673074Z               "line": 39
2026-07-26T22:33:03.2673231Z             },
2026-07-26T22:33:03.2673308Z             {
2026-07-26T22:33:03.2673431Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-07-26T22:33:03.2673526Z               "line": 79
2026-07-26T22:33:03.2673614Z             },
2026-07-26T22:33:03.2673685Z             {
2026-07-26T22:33:03.2673813Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-07-26T22:33:03.2673894Z               "line": 162
2026-07-26T22:33:03.2673980Z             }
2026-07-26T22:33:03.2674056Z           ]
2026-07-26T22:33:03.2674142Z         },
2026-07-26T22:33:03.2674224Z         "int": {
2026-07-26T22:33:03.2674323Z           "complete": false,
2026-07-26T22:33:03.2674418Z           "evidence": []
2026-07-26T22:33:03.2674504Z         },
2026-07-26T22:33:03.2674577Z         "unit": {
2026-07-26T22:33:03.2674676Z           "complete": true,
2026-07-26T22:33:03.2674771Z           "evidence": [
2026-07-26T22:33:03.2674853Z             {
2026-07-26T22:33:03.2674976Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-07-26T22:33:03.2675072Z               "line": 206
2026-07-26T22:33:03.2675149Z             },
2026-07-26T22:33:03.2675296Z             {
2026-07-26T22:33:03.2675415Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-07-26T22:33:03.2675497Z               "line": 222
2026-07-26T22:33:03.2675573Z             },
2026-07-26T22:33:03.2675657Z             {
2026-07-26T22:33:03.2675824Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-07-26T22:33:03.2675925Z               "line": 238
2026-07-26T22:33:03.2676006Z             },
2026-07-26T22:33:03.2676081Z             {
2026-07-26T22:33:03.2676197Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-07-26T22:33:03.2676283Z               "line": 251
2026-07-26T22:33:03.2676363Z             },
2026-07-26T22:33:03.2676444Z             {
2026-07-26T22:33:03.2676559Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-07-26T22:33:03.2676644Z               "line": 258
2026-07-26T22:33:03.2676768Z             }
2026-07-26T22:33:03.2676845Z           ]
2026-07-26T22:33:03.2676926Z         }
2026-07-26T22:33:03.2677007Z       }
2026-07-26T22:33:03.2677088Z     },
2026-07-26T22:33:03.2677169Z     {
2026-07-26T22:33:03.2677298Z       "id": "REQ-SCREENGRID-REPAINT-MODE-REPLAY",
2026-07-26T22:33:03.2679559Z       "title": "RC-RENDER-TRUTH W3 (ADR-0043 decision 4, hertz stale-glyphs RCA leg 4 P1): ScreenGrid cold repaint replays EVERY tracked render-affecting mode — DECSTBM scroll margins at minimum — before final cursor placement (today render_repaint omits tracked margins, so client and server grids interpret subsequent raw scrolling against different regions => stale/moved rows after reattach/resize; the trailing-blank omission after ED2 is semantically correct and NOT the bug). Stateful emulator contract: dirty screen + synthesized repaint + next raw frame == server grid. Gate: impl — tracked-mode replay in render_repaint; unit — repaint emits tracked DECSTBM, emulator contract holds for scroll-after-repaint; doc — ADR-0043.",
2026-07-26T22:33:03.2679684Z       "requiredStages": [
2026-07-26T22:33:03.2679764Z         "doc",
2026-07-26T22:33:03.2679860Z         "impl",
2026-07-26T22:33:03.2679931Z         "unit"
2026-07-26T22:33:03.2680003Z       ],
2026-07-26T22:33:03.2680084Z       "stages": {
2026-07-26T22:33:03.2680165Z         "doc": {
2026-07-26T22:33:03.2680256Z           "complete": true,
2026-07-26T22:33:03.2680352Z           "evidence": [
2026-07-26T22:33:03.2680436Z             {
2026-07-26T22:33:03.2680580Z               "path": "docs/adr/0043-terminal-render-lifecycle.md",
2026-07-26T22:33:03.2680676Z               "line": 63
2026-07-26T22:33:03.2680751Z             }
2026-07-26T22:33:03.2680831Z           ]
2026-07-26T22:33:03.2680912Z         },
2026-07-26T22:33:03.2680998Z         "impl": {
2026-07-26T22:33:03.2681087Z           "complete": true,
2026-07-26T22:33:03.2681167Z           "evidence": [
2026-07-26T22:33:03.2681254Z             {
2026-07-26T22:33:03.2681378Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2681558Z               "line": 993
2026-07-26T22:33:03.2681645Z             }
2026-07-26T22:33:03.2681726Z           ]
2026-07-26T22:33:03.2681820Z         },
2026-07-26T22:33:03.2681898Z         "int": {
2026-07-26T22:33:03.2681997Z           "complete": false,
2026-07-26T22:33:03.2682088Z           "evidence": []
2026-07-26T22:33:03.2682178Z         },
2026-07-26T22:33:03.2682260Z         "unit": {
2026-07-26T22:33:03.2682359Z           "complete": true,
2026-07-26T22:33:03.2682440Z           "evidence": [
2026-07-26T22:33:03.2682522Z             {
2026-07-26T22:33:03.2682627Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2682727Z               "line": 1332
2026-07-26T22:33:03.2682808Z             },
2026-07-26T22:33:03.2682885Z             {
2026-07-26T22:33:03.2683002Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2683099Z               "line": 1350
2026-07-26T22:33:03.2683185Z             }
2026-07-26T22:33:03.2683276Z           ]
2026-07-26T22:33:03.2683355Z         }
2026-07-26T22:33:03.2683445Z       }
2026-07-26T22:33:03.2683588Z     },
2026-07-26T22:33:03.2683686Z     {
2026-07-26T22:33:03.2683781Z       "id": "REQ-SCREENGRID-WIDTH",
2026-07-26T22:33:03.2688705Z       "title": "TEARDOWN-AUTHORITY W3 (hertz field RCA 2026-07-19, doyle-confirmed at source): ScreenGrid models every character as ONE display column, so wide characters (CJK, emoji, and other 2-column glyphs) shift subsequent text left and leave stale scraps at the right margin — field repro on the Claude settings UI (left-shifted rows + To/Wh/Es left-margin scraps). SOURCE: spt-term/src/screen.rs Cell { ch: char, pen } (~127) carries NO width datum, and put_char (~327-343) unconditionally advances col += 1, with pending_wrap likewise advancing a single display cell. FIX: give the grid a real display-width model — a wide glyph occupies its leading cell plus a continuation cell that renders nothing and is never independently addressable; cursor motion, wrap, erase, and scroll all reckon in DISPLAY columns. WIDTH POLICY (hertz-proposed, doyle-ratified — pinned so the renderer and the emulator can never disagree): share ratatui's pinned unicode-width 0.2.0 as a WORKSPACE dependency, ambiguous-width = 1, no CJK-context override. A second width authority in the tree is the defect this policy exists to prevent. Gate: doc — the width policy stated where the grid is documented; impl — width-aware Cell/put_char/wrap + display-column reckoning across cursor/erase/scroll; unit — wide-glyph advance + continuation-cell invariants, wrap at the right margin with a wide glyph that cannot fit, erase/overwrite of a continuation cell clears the whole glyph, combining/zero-width marks do not advance; int — regression oracle against an INDEPENDENT emulator's rendering of the same byte stream (the field repro shape: wide glyphs followed by EL and CUP row-addressed redraws must leave no left-shift and no margin scraps).",
2026-07-26T22:33:03.2688932Z       "requiredStages": [
2026-07-26T22:33:03.2689146Z         "doc",
2026-07-26T22:33:03.2689251Z         "impl",
2026-07-26T22:33:03.2689343Z         "unit",
2026-07-26T22:33:03.2689418Z         "int"
2026-07-26T22:33:03.2689499Z       ],
2026-07-26T22:33:03.2689581Z       "stages": {
2026-07-26T22:33:03.2689672Z         "doc": {
2026-07-26T22:33:03.2689766Z           "complete": true,
2026-07-26T22:33:03.2689852Z           "evidence": [
2026-07-26T22:33:03.2689934Z             {
2026-07-26T22:33:03.2690058Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2690138Z               "line": 41
2026-07-26T22:33:03.2690225Z             }
2026-07-26T22:33:03.2690306Z           ]
2026-07-26T22:33:03.2690382Z         },
2026-07-26T22:33:03.2690462Z         "impl": {
2026-07-26T22:33:03.2690555Z           "complete": true,
2026-07-26T22:33:03.2690639Z           "evidence": [
2026-07-26T22:33:03.2690720Z             {
2026-07-26T22:33:03.2690845Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2691011Z               "line": 162
2026-07-26T22:33:03.2691092Z             },
2026-07-26T22:33:03.2691184Z             {
2026-07-26T22:33:03.2691283Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2691367Z               "line": 202
2026-07-26T22:33:03.2691453Z             },
2026-07-26T22:33:03.2691525Z             {
2026-07-26T22:33:03.2691633Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2691737Z               "line": 461
2026-07-26T22:33:03.2691809Z             },
2026-07-26T22:33:03.2691909Z             {
2026-07-26T22:33:03.2692027Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2692133Z               "line": 485
2026-07-26T22:33:03.2692215Z             },
2026-07-26T22:33:03.2692300Z             {
2026-07-26T22:33:03.2692399Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2692482Z               "line": 503
2026-07-26T22:33:03.2692562Z             },
2026-07-26T22:33:03.2692639Z             {
2026-07-26T22:33:03.2692748Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2692901Z               "line": 528
2026-07-26T22:33:03.2692986Z             },
2026-07-26T22:33:03.2693058Z             {
2026-07-26T22:33:03.2693173Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2693262Z               "line": 588
2026-07-26T22:33:03.2693397Z             },
2026-07-26T22:33:03.2693474Z             {
2026-07-26T22:33:03.2693586Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2693663Z               "line": 631
2026-07-26T22:33:03.2693746Z             },
2026-07-26T22:33:03.2693822Z             {
2026-07-26T22:33:03.2693934Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2694014Z               "line": 648
2026-07-26T22:33:03.2694096Z             },
2026-07-26T22:33:03.2694181Z             {
2026-07-26T22:33:03.2694289Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2694438Z               "line": 666
2026-07-26T22:33:03.2694515Z             },
2026-07-26T22:33:03.2694594Z             {
2026-07-26T22:33:03.2694709Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2694791Z               "line": 691
2026-07-26T22:33:03.2694871Z             },
2026-07-26T22:33:03.2694957Z             {
2026-07-26T22:33:03.2695058Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2695143Z               "line": 965
2026-07-26T22:33:03.2695223Z             },
2026-07-26T22:33:03.2695305Z             {
2026-07-26T22:33:03.2695406Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2695491Z               "line": 1071
2026-07-26T22:33:03.2695586Z             }
2026-07-26T22:33:03.2695663Z           ]
2026-07-26T22:33:03.2695740Z         },
2026-07-26T22:33:03.2695816Z         "int": {
2026-07-26T22:33:03.2695906Z           "complete": true,
2026-07-26T22:33:03.2695993Z           "evidence": [
2026-07-26T22:33:03.2696092Z             {
2026-07-26T22:33:03.2696206Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2696307Z               "line": 8519
2026-07-26T22:33:03.2696393Z             },
2026-07-26T22:33:03.2696478Z             {
2026-07-26T22:33:03.2696622Z               "path": "crates/spt-term/tests/screengrid_width_oracle.rs",
2026-07-26T22:33:03.2696722Z               "line": 64
2026-07-26T22:33:03.2696816Z             },
2026-07-26T22:33:03.2696896Z             {
2026-07-26T22:33:03.2697046Z               "path": "crates/spt-term/tests/screengrid_width_oracle.rs",
2026-07-26T22:33:03.2697126Z               "line": 78
2026-07-26T22:33:03.2697216Z             },
2026-07-26T22:33:03.2697293Z             {
2026-07-26T22:33:03.2697440Z               "path": "crates/spt-term/tests/screengrid_width_oracle.rs",
2026-07-26T22:33:03.2697530Z               "line": 89
2026-07-26T22:33:03.2697618Z             },
2026-07-26T22:33:03.2697698Z             {
2026-07-26T22:33:03.2697894Z               "path": "crates/spt-term/tests/screengrid_width_oracle.rs",
2026-07-26T22:33:03.2697984Z               "line": 98
2026-07-26T22:33:03.2698079Z             },
2026-07-26T22:33:03.2698160Z             {
2026-07-26T22:33:03.2698309Z               "path": "crates/spt-term/tests/screengrid_width_oracle.rs",
2026-07-26T22:33:03.2698394Z               "line": 113
2026-07-26T22:33:03.2698489Z             }
2026-07-26T22:33:03.2698572Z           ]
2026-07-26T22:33:03.2698656Z         },
2026-07-26T22:33:03.2698742Z         "unit": {
2026-07-26T22:33:03.2698838Z           "complete": true,
2026-07-26T22:33:03.2698924Z           "evidence": [
2026-07-26T22:33:03.2699184Z             {
2026-07-26T22:33:03.2699298Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2699392Z               "line": 1536
2026-07-26T22:33:03.2699478Z             },
2026-07-26T22:33:03.2699569Z             {
2026-07-26T22:33:03.2699678Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2699778Z               "line": 1561
2026-07-26T22:33:03.2699864Z             },
2026-07-26T22:33:03.2699950Z             {
2026-07-26T22:33:03.2700126Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2700222Z               "line": 1574
2026-07-26T22:33:03.2700303Z             },
2026-07-26T22:33:03.2700397Z             {
2026-07-26T22:33:03.2700504Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2700660Z               "line": 1589
2026-07-26T22:33:03.2700746Z             },
2026-07-26T22:33:03.2700828Z             {
2026-07-26T22:33:03.2700937Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2701027Z               "line": 1604
2026-07-26T22:33:03.2701105Z             },
2026-07-26T22:33:03.2701190Z             {
2026-07-26T22:33:03.2701295Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2701371Z               "line": 1619
2026-07-26T22:33:03.2701533Z             },
2026-07-26T22:33:03.2701676Z             {
2026-07-26T22:33:03.2701787Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2701871Z               "line": 1640
2026-07-26T22:33:03.2701975Z             },
2026-07-26T22:33:03.2702066Z             {
2026-07-26T22:33:03.2702179Z               "path": "crates/spt-term/src/screen.rs",
2026-07-26T22:33:03.2702268Z               "line": 1795
2026-07-26T22:33:03.2702354Z             }
2026-07-26T22:33:03.2702479Z           ]
2026-07-26T22:33:03.2702560Z         }
2026-07-26T22:33:03.2702655Z       }
2026-07-26T22:33:03.2702737Z     },
2026-07-26T22:33:03.2702817Z     {
2026-07-26T22:33:03.2702926Z       "id": "REQ-SEAM-ACTIVITY",
2026-07-26T22:33:03.2703090Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-07-26T22:33:03.2703189Z       "requiredStages": [
2026-07-26T22:33:03.2703264Z         "impl",
2026-07-26T22:33:03.2703347Z         "unit"
2026-07-26T22:33:03.2703428Z       ],
2026-07-26T22:33:03.2703514Z       "stages": {
2026-07-26T22:33:03.2703599Z         "doc": {
2026-07-26T22:33:03.2703700Z           "complete": false,
2026-07-26T22:33:03.2703780Z           "evidence": []
2026-07-26T22:33:03.2703875Z         },
2026-07-26T22:33:03.2703957Z         "impl": {
2026-07-26T22:33:03.2704053Z           "complete": true,
2026-07-26T22:33:03.2704133Z           "evidence": [
2026-07-26T22:33:03.2704214Z             {
2026-07-26T22:33:03.2704339Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.2704434Z               "line": 18
2026-07-26T22:33:03.2704509Z             },
2026-07-26T22:33:03.2704589Z             {
2026-07-26T22:33:03.2704699Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.2704788Z               "line": 35
2026-07-26T22:33:03.2704868Z             },
2026-07-26T22:33:03.2704950Z             {
2026-07-26T22:33:03.2705051Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.2705145Z               "line": 84
2026-07-26T22:33:03.2705231Z             }
2026-07-26T22:33:03.2705379Z           ]
2026-07-26T22:33:03.2705464Z         },
2026-07-26T22:33:03.2705555Z         "int": {
2026-07-26T22:33:03.2705656Z           "complete": false,
2026-07-26T22:33:03.2705751Z           "evidence": []
2026-07-26T22:33:03.2705832Z         },
2026-07-26T22:33:03.2705923Z         "unit": {
2026-07-26T22:33:03.2706013Z           "complete": true,
2026-07-26T22:33:03.2706108Z           "evidence": [
2026-07-26T22:33:03.2706194Z             {
2026-07-26T22:33:03.2706309Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.2706409Z               "line": 425
2026-07-26T22:33:03.2706490Z             },
2026-07-26T22:33:03.2706567Z             {
2026-07-26T22:33:03.2706671Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.2706766Z               "line": 442
2026-07-26T22:33:03.2706844Z             },
2026-07-26T22:33:03.2706930Z             {
2026-07-26T22:33:03.2707048Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.2707154Z               "line": 451
2026-07-26T22:33:03.2707230Z             }
2026-07-26T22:33:03.2707310Z           ]
2026-07-26T22:33:03.2707433Z         }
2026-07-26T22:33:03.2707524Z       }
2026-07-26T22:33:03.2707606Z     },
2026-07-26T22:33:03.2707690Z     {
2026-07-26T22:33:03.2707790Z       "id": "REQ-SEAM-CAPABILITY",
2026-07-26T22:33:03.2707939Z       "title": "Hostable endpoint-types capability declaration",
2026-07-26T22:33:03.2708072Z       "requiredStages": [
2026-07-26T22:33:03.2708159Z         "impl",
2026-07-26T22:33:03.2708244Z         "unit"
2026-07-26T22:33:03.2708324Z       ],
2026-07-26T22:33:03.2708401Z       "stages": {
2026-07-26T22:33:03.2708488Z         "doc": {
2026-07-26T22:33:03.2708582Z           "complete": false,
2026-07-26T22:33:03.2708677Z           "evidence": []
2026-07-26T22:33:03.2708754Z         },
2026-07-26T22:33:03.2708836Z         "impl": {
2026-07-26T22:33:03.2708925Z           "complete": true,
2026-07-26T22:33:03.2709146Z           "evidence": [
2026-07-26T22:33:03.2709335Z             {
2026-07-26T22:33:03.2709461Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.2709549Z               "line": 751
2026-07-26T22:33:03.2709640Z             }
2026-07-26T22:33:03.2709716Z           ]
2026-07-26T22:33:03.2709797Z         },
2026-07-26T22:33:03.2709876Z         "int": {
2026-07-26T22:33:03.2709957Z           "complete": false,
2026-07-26T22:33:03.2710047Z           "evidence": []
2026-07-26T22:33:03.2710124Z         },
2026-07-26T22:33:03.2710201Z         "unit": {
2026-07-26T22:33:03.2710295Z           "complete": true,
2026-07-26T22:33:03.2710376Z           "evidence": [
2026-07-26T22:33:03.2710453Z             {
2026-07-26T22:33:03.2710567Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.2710652Z               "line": 1608
2026-07-26T22:33:03.2710726Z             }
2026-07-26T22:33:03.2710816Z           ]
2026-07-26T22:33:03.2710891Z         }
2026-07-26T22:33:03.2710967Z       }
2026-07-26T22:33:03.2711055Z     },
2026-07-26T22:33:03.2711135Z     {
2026-07-26T22:33:03.2711234Z       "id": "REQ-SEAM-HISTORY",
2026-07-26T22:33:03.2711421Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-07-26T22:33:03.2711521Z       "requiredStages": [
2026-07-26T22:33:03.2711601Z         "impl",
2026-07-26T22:33:03.2711689Z         "unit",
2026-07-26T22:33:03.2711769Z         "int"
2026-07-26T22:33:03.2711855Z       ],
2026-07-26T22:33:03.2711931Z       "stages": {
2026-07-26T22:33:03.2712018Z         "doc": {
2026-07-26T22:33:03.2712107Z           "complete": false,
2026-07-26T22:33:03.2712203Z           "evidence": []
2026-07-26T22:33:03.2712280Z         },
2026-07-26T22:33:03.2712361Z         "impl": {
2026-07-26T22:33:03.2712445Z           "complete": true,
2026-07-26T22:33:03.2712540Z           "evidence": [
2026-07-26T22:33:03.2712616Z             {
2026-07-26T22:33:03.2712734Z               "path": "crates/spt-live/src/echo.rs",
2026-07-26T22:33:03.2712815Z               "line": 24
2026-07-26T22:33:03.2712968Z             },
2026-07-26T22:33:03.2713049Z             {
2026-07-26T22:33:03.2713171Z               "path": "crates/spt-live/src/history.rs",
2026-07-26T22:33:03.2713253Z               "line": 22
2026-07-26T22:33:03.2713340Z             }
2026-07-26T22:33:03.2713416Z           ]
2026-07-26T22:33:03.2713500Z         },
2026-07-26T22:33:03.2713573Z         "int": {
2026-07-26T22:33:03.2713678Z           "complete": true,
2026-07-26T22:33:03.2713759Z           "evidence": [
2026-07-26T22:33:03.2718222Z             {
2026-07-26T22:33:03.2718384Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-07-26T22:33:03.2718484Z               "line": 260
2026-07-26T22:33:03.2718565Z             }
2026-07-26T22:33:03.2718655Z           ]
2026-07-26T22:33:03.2718728Z         },
2026-07-26T22:33:03.2718828Z         "unit": {
2026-07-26T22:33:03.2718922Z           "complete": true,
2026-07-26T22:33:03.2719138Z           "evidence": [
2026-07-26T22:33:03.2719242Z             {
2026-07-26T22:33:03.2719387Z               "path": "crates/spt-live/src/echo.rs",
2026-07-26T22:33:03.2719476Z               "line": 205
2026-07-26T22:33:03.2719663Z             },
2026-07-26T22:33:03.2719744Z             {
2026-07-26T22:33:03.2719857Z               "path": "crates/spt-live/src/echo.rs",
2026-07-26T22:33:03.2719948Z               "line": 234
2026-07-26T22:33:03.2720031Z             },
2026-07-26T22:33:03.2720181Z             {
2026-07-26T22:33:03.2720290Z               "path": "crates/spt-live/src/echo.rs",
2026-07-26T22:33:03.2720376Z               "line": 254
2026-07-26T22:33:03.2720469Z             },
2026-07-26T22:33:03.2720554Z             {
2026-07-26T22:33:03.2720675Z               "path": "crates/spt-live/src/history.rs",
2026-07-26T22:33:03.2720747Z               "line": 199
2026-07-26T22:33:03.2720827Z             },
2026-07-26T22:33:03.2720908Z             {
2026-07-26T22:33:03.2721018Z               "path": "crates/spt-live/src/history.rs",
2026-07-26T22:33:03.2721165Z               "line": 219
2026-07-26T22:33:03.2721247Z             },
2026-07-26T22:33:03.2721323Z             {
2026-07-26T22:33:03.2721427Z               "path": "crates/spt-live/src/history.rs",
2026-07-26T22:33:03.2721522Z               "line": 244
2026-07-26T22:33:03.2721605Z             },
2026-07-26T22:33:03.2721685Z             {
2026-07-26T22:33:03.2721790Z               "path": "crates/spt-live/src/history.rs",
2026-07-26T22:33:03.2721886Z               "line": 276
2026-07-26T22:33:03.2721981Z             },
2026-07-26T22:33:03.2722085Z             {
2026-07-26T22:33:03.2722196Z               "path": "crates/spt-live/src/history.rs",
2026-07-26T22:33:03.2722287Z               "line": 297
2026-07-26T22:33:03.2722371Z             },
2026-07-26T22:33:03.2722453Z             {
2026-07-26T22:33:03.2722554Z               "path": "crates/spt-live/src/history.rs",
2026-07-26T22:33:03.2722634Z               "line": 324
2026-07-26T22:33:03.2722715Z             }
2026-07-26T22:33:03.2722796Z           ]
2026-07-26T22:33:03.2722874Z         }
2026-07-26T22:33:03.2722954Z       }
2026-07-26T22:33:03.2723034Z     },
2026-07-26T22:33:03.2723114Z     {
2026-07-26T22:33:03.2723215Z       "id": "REQ-SEAM-INJECT",
2026-07-26T22:33:03.2723384Z       "title": "inject-input methods configurable per activity-state",
2026-07-26T22:33:03.2723475Z       "requiredStages": [
2026-07-26T22:33:03.2723566Z         "impl",
2026-07-26T22:33:03.2723647Z         "unit"
2026-07-26T22:33:03.2723736Z       ],
2026-07-26T22:33:03.2723818Z       "stages": {
2026-07-26T22:33:03.2723905Z         "doc": {
2026-07-26T22:33:03.2723999Z           "complete": false,
2026-07-26T22:33:03.2724099Z           "evidence": []
2026-07-26T22:33:03.2724181Z         },
2026-07-26T22:33:03.2724262Z         "impl": {
2026-07-26T22:33:03.2724342Z           "complete": true,
2026-07-26T22:33:03.2724438Z           "evidence": [
2026-07-26T22:33:03.2724519Z             {
2026-07-26T22:33:03.2724638Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.2724729Z               "line": 19
2026-07-26T22:33:03.2724877Z             },
2026-07-26T22:33:03.2724957Z             {
2026-07-26T22:33:03.2725068Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.2725140Z               "line": 163
2026-07-26T22:33:03.2725225Z             }
2026-07-26T22:33:03.2725306Z           ]
2026-07-26T22:33:03.2725383Z         },
2026-07-26T22:33:03.2725469Z         "int": {
2026-07-26T22:33:03.2725572Z           "complete": false,
2026-07-26T22:33:03.2725667Z           "evidence": []
2026-07-26T22:33:03.2725748Z         },
2026-07-26T22:33:03.2725829Z         "unit": {
2026-07-26T22:33:03.2725913Z           "complete": true,
2026-07-26T22:33:03.2726003Z           "evidence": [
2026-07-26T22:33:03.2726085Z             {
2026-07-26T22:33:03.2726200Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.2726284Z               "line": 531
2026-07-26T22:33:03.2726365Z             },
2026-07-26T22:33:03.2726448Z             {
2026-07-26T22:33:03.2726571Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.2726661Z               "line": 551
2026-07-26T22:33:03.2726805Z             }
2026-07-26T22:33:03.2726886Z           ]
2026-07-26T22:33:03.2726966Z         }
2026-07-26T22:33:03.2727048Z       }
2026-07-26T22:33:03.2727129Z     },
2026-07-26T22:33:03.2727210Z     {
2026-07-26T22:33:03.2727314Z       "id": "REQ-SEAM-POSTSPAWN",
2026-07-26T22:33:03.2727491Z       "title": "post-spawn / api bind seam with boot nonce",
2026-07-26T22:33:03.2727596Z       "requiredStages": [
2026-07-26T22:33:03.2727673Z         "impl",
2026-07-26T22:33:03.2727758Z         "unit"
2026-07-26T22:33:03.2727839Z       ],
2026-07-26T22:33:03.2727935Z       "stages": {
2026-07-26T22:33:03.2728017Z         "doc": {
2026-07-26T22:33:03.2728115Z           "complete": false,
2026-07-26T22:33:03.2728206Z           "evidence": []
2026-07-26T22:33:03.2728284Z         },
2026-07-26T22:33:03.2728370Z         "impl": {
2026-07-26T22:33:03.2728463Z           "complete": true,
2026-07-26T22:33:03.2728586Z           "evidence": [
2026-07-26T22:33:03.2728663Z             {
2026-07-26T22:33:03.2728778Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.2728877Z               "line": 18
2026-07-26T22:33:03.2729054Z             },
2026-07-26T22:33:03.2729478Z             {
2026-07-26T22:33:03.2729726Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.2729850Z               "line": 812
2026-07-26T22:33:03.2729947Z             }
2026-07-26T22:33:03.2730050Z           ]
2026-07-26T22:33:03.2730146Z         },
2026-07-26T22:33:03.2730247Z         "int": {
2026-07-26T22:33:03.2730360Z           "complete": false,
2026-07-26T22:33:03.2730475Z           "evidence": []
2026-07-26T22:33:03.2730567Z         },
2026-07-26T22:33:03.2730675Z         "unit": {
2026-07-26T22:33:03.2730774Z           "complete": true,
2026-07-26T22:33:03.2730879Z           "evidence": [
2026-07-26T22:33:03.2730974Z             {
2026-07-26T22:33:03.2731124Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.2731240Z               "line": 1791
2026-07-26T22:33:03.2731339Z             },
2026-07-26T22:33:03.2731439Z             {
2026-07-26T22:33:03.2731583Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.2731687Z               "line": 1801
2026-07-26T22:33:03.2731792Z             }
2026-07-26T22:33:03.2731884Z           ]
2026-07-26T22:33:03.2731983Z         }
2026-07-26T22:33:03.2732083Z       }
2026-07-26T22:33:03.2732180Z     },
2026-07-26T22:33:03.2732274Z     {
2026-07-26T22:33:03.2732378Z       "id": "REQ-SEAM-PSYCHE",
2026-07-26T22:33:03.2732555Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-07-26T22:33:03.2732669Z       "requiredStages": [
2026-07-26T22:33:03.2732771Z         "impl",
2026-07-26T22:33:03.2732870Z         "unit",
2026-07-26T22:33:03.2732975Z         "int"
2026-07-26T22:33:03.2733071Z       ],
2026-07-26T22:33:03.2733171Z       "stages": {
2026-07-26T22:33:03.2733256Z         "doc": {
2026-07-26T22:33:03.2733556Z           "complete": false,
2026-07-26T22:33:03.2733655Z           "evidence": []
2026-07-26T22:33:03.2733756Z         },
2026-07-26T22:33:03.2733864Z         "impl": {
2026-07-26T22:33:03.2733977Z           "complete": true,
2026-07-26T22:33:03.2734083Z           "evidence": [
2026-07-26T22:33:03.2734188Z             {
2026-07-26T22:33:03.2734335Z               "path": "crates/spt-live/src/psyche.rs",
2026-07-26T22:33:03.2734450Z               "line": 11
2026-07-26T22:33:03.2734540Z             },
2026-07-26T22:33:03.2734644Z             {
2026-07-26T22:33:03.2734765Z               "path": "crates/spt/src/api/live.rs",
2026-07-26T22:33:03.2734865Z               "line": 12
2026-07-26T22:33:03.2734964Z             },
2026-07-26T22:33:03.2735066Z             {
2026-07-26T22:33:03.2735203Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.2735318Z               "line": 573
2026-07-26T22:33:03.2735413Z             }
2026-07-26T22:33:03.2735522Z           ]
2026-07-26T22:33:03.2735618Z         },
2026-07-26T22:33:03.2735719Z         "int": {
2026-07-26T22:33:03.2735818Z           "complete": true,
2026-07-26T22:33:03.2736076Z           "evidence": [
2026-07-26T22:33:03.2736175Z             {
2026-07-26T22:33:03.2736323Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-07-26T22:33:03.2736417Z               "line": 259
2026-07-26T22:33:03.2736577Z             }
2026-07-26T22:33:03.2736673Z           ]
2026-07-26T22:33:03.2736783Z         },
2026-07-26T22:33:03.2736873Z         "unit": {
2026-07-26T22:33:03.2736974Z           "complete": true,
2026-07-26T22:33:03.2737064Z           "evidence": [
2026-07-26T22:33:03.2737145Z             {
2026-07-26T22:33:03.2737265Z               "path": "crates/spt-live/src/pulse.rs",
2026-07-26T22:33:03.2737365Z               "line": 106
2026-07-26T22:33:03.2737450Z             },
2026-07-26T22:33:03.2737536Z             {
2026-07-26T22:33:03.2737646Z               "path": "crates/spt-live/src/pulse.rs",
2026-07-26T22:33:03.2737784Z               "line": 137
2026-07-26T22:33:03.2737870Z             },
2026-07-26T22:33:03.2737957Z             {
2026-07-26T22:33:03.2738070Z               "path": "crates/spt-live/src/pulse.rs",
2026-07-26T22:33:03.2738156Z               "line": 232
2026-07-26T22:33:03.2738248Z             }
2026-07-26T22:33:03.2738328Z           ]
2026-07-26T22:33:03.2738409Z         }
2026-07-26T22:33:03.2738495Z       }
2026-07-26T22:33:03.2738572Z     },
2026-07-26T22:33:03.2738652Z     {
2026-07-26T22:33:03.2738762Z       "id": "REQ-SEAM-RESUME",
2026-07-26T22:33:03.2739065Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-07-26T22:33:03.2739170Z       "requiredStages": [],
2026-07-26T22:33:03.2739253Z       "stages": {
2026-07-26T22:33:03.2739333Z         "doc": {
2026-07-26T22:33:03.2739423Z           "complete": false,
2026-07-26T22:33:03.2739519Z           "evidence": []
2026-07-26T22:33:03.2739596Z         },
2026-07-26T22:33:03.2739681Z         "impl": {
2026-07-26T22:33:03.2739776Z           "complete": false,
2026-07-26T22:33:03.2739863Z           "evidence": []
2026-07-26T22:33:03.2739943Z         },
2026-07-26T22:33:03.2740019Z         "int": {
2026-07-26T22:33:03.2740110Z           "complete": false,
2026-07-26T22:33:03.2740197Z           "evidence": []
2026-07-26T22:33:03.2740276Z         },
2026-07-26T22:33:03.2740353Z         "unit": {
2026-07-26T22:33:03.2740444Z           "complete": false,
2026-07-26T22:33:03.2740535Z           "evidence": []
2026-07-26T22:33:03.2740615Z         }
2026-07-26T22:33:03.2740701Z       }
2026-07-26T22:33:03.2740788Z     },
2026-07-26T22:33:03.2740874Z     {
2026-07-26T22:33:03.2740973Z       "id": "REQ-SEAM-SPAWN",
2026-07-26T22:33:03.2741073Z       "title": "spawn-session seam",
2026-07-26T22:33:03.2741170Z       "requiredStages": [
2026-07-26T22:33:03.2741254Z         "impl",
2026-07-26T22:33:03.2741335Z         "unit"
2026-07-26T22:33:03.2741425Z       ],
2026-07-26T22:33:03.2741506Z       "stages": {
2026-07-26T22:33:03.2741670Z         "doc": {
2026-07-26T22:33:03.2741756Z           "complete": false,
2026-07-26T22:33:03.2741853Z           "evidence": []
2026-07-26T22:33:03.2741933Z         },
2026-07-26T22:33:03.2742023Z         "impl": {
2026-07-26T22:33:03.2742115Z           "complete": true,
2026-07-26T22:33:03.2742215Z           "evidence": [
2026-07-26T22:33:03.2742295Z             {
2026-07-26T22:33:03.2742425Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.2742510Z               "line": 20
2026-07-26T22:33:03.2742600Z             }
2026-07-26T22:33:03.2742682Z           ]
2026-07-26T22:33:03.2742768Z         },
2026-07-26T22:33:03.2742844Z         "int": {
2026-07-26T22:33:03.2742943Z           "complete": false,
2026-07-26T22:33:03.2743021Z           "evidence": []
2026-07-26T22:33:03.2743106Z         },
2026-07-26T22:33:03.2743187Z         "unit": {
2026-07-26T22:33:03.2743287Z           "complete": true,
2026-07-26T22:33:03.2743364Z           "evidence": [
2026-07-26T22:33:03.2743463Z             {
2026-07-26T22:33:03.2743582Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.2743741Z               "line": 1075
2026-07-26T22:33:03.2743840Z             },
2026-07-26T22:33:03.2743922Z             {
2026-07-26T22:33:03.2744047Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.2744130Z               "line": 1082
2026-07-26T22:33:03.2744273Z             },
2026-07-26T22:33:03.2744350Z             {
2026-07-26T22:33:03.2744466Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.2744561Z               "line": 1545
2026-07-26T22:33:03.2744643Z             },
2026-07-26T22:33:03.2744724Z             {
2026-07-26T22:33:03.2744847Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.2744934Z               "line": 1551
2026-07-26T22:33:03.2745010Z             },
2026-07-26T22:33:03.2745091Z             {
2026-07-26T22:33:03.2745214Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.2745358Z               "line": 1576
2026-07-26T22:33:03.2745439Z             },
2026-07-26T22:33:03.2745529Z             {
2026-07-26T22:33:03.2745663Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.2745749Z               "line": 1613
2026-07-26T22:33:03.2745830Z             }
2026-07-26T22:33:03.2745912Z           ]
2026-07-26T22:33:03.2745992Z         }
2026-07-26T22:33:03.2746073Z       }
2026-07-26T22:33:03.2746154Z     },
2026-07-26T22:33:03.2746236Z     {
2026-07-26T22:33:03.2746335Z       "id": "REQ-SEAM-UPDATE",
2026-07-26T22:33:03.2746503Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-07-26T22:33:03.2746599Z       "requiredStages": [
2026-07-26T22:33:03.2746692Z         "impl",
2026-07-26T22:33:03.2746777Z         "unit"
2026-07-26T22:33:03.2746858Z       ],
2026-07-26T22:33:03.2746953Z       "stages": {
2026-07-26T22:33:03.2747033Z         "doc": {
2026-07-26T22:33:03.2747128Z           "complete": false,
2026-07-26T22:33:03.2747229Z           "evidence": []
2026-07-26T22:33:03.2747310Z         },
2026-07-26T22:33:03.2747390Z         "impl": {
2026-07-26T22:33:03.2747495Z           "complete": true,
2026-07-26T22:33:03.2747577Z           "evidence": [
2026-07-26T22:33:03.2747658Z             {
2026-07-26T22:33:03.2747776Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-07-26T22:33:03.2747877Z               "line": 28
2026-07-26T22:33:03.2747954Z             },
2026-07-26T22:33:03.2748039Z             {
2026-07-26T22:33:03.2748164Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-07-26T22:33:03.2748258Z               "line": 88
2026-07-26T22:33:03.2748339Z             }
2026-07-26T22:33:03.2748425Z           ]
2026-07-26T22:33:03.2748512Z         },
2026-07-26T22:33:03.2748592Z         "int": {
2026-07-26T22:33:03.2748692Z           "complete": false,
2026-07-26T22:33:03.2748774Z           "evidence": []
2026-07-26T22:33:03.2748855Z         },
2026-07-26T22:33:03.2749050Z         "unit": {
2026-07-26T22:33:03.2749146Z           "complete": true,
2026-07-26T22:33:03.2749231Z           "evidence": [
2026-07-26T22:33:03.2749322Z             {
2026-07-26T22:33:03.2749443Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-07-26T22:33:03.2749536Z               "line": 332
2026-07-26T22:33:03.2749612Z             },
2026-07-26T22:33:03.2749707Z             {
2026-07-26T22:33:03.2749827Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-07-26T22:33:03.2749922Z               "line": 343
2026-07-26T22:33:03.2750002Z             }
2026-07-26T22:33:03.2750079Z           ]
2026-07-26T22:33:03.2750170Z         }
2026-07-26T22:33:03.2750250Z       }
2026-07-26T22:33:03.2750326Z     },
2026-07-26T22:33:03.2750404Z     {
2026-07-26T22:33:03.2750508Z       "id": "REQ-SEAT-LIFETIME-BOUNDED",
2026-07-26T22:33:03.2753733Z       "title": "REGISTRY-LIFECYCLE W1 (ADR-0040 decision 5, hertz defect B leg 5 CROSS-FAMILY per the final attribution correction — my_stream_subs releases only at conn-loop exit, NO unsubscribe verb existed, ~546/589 broker threads were unnamed parked SubscriberSeat writers on completed Registry/sync/update seats): new KIND_NET_STREAM_UNSUBSCRIBE broker verb removes the SubscriberSeat, stops AND JOINS its writer thread, drops its cursor; every dispatch worker calls it on serve completion (ALL families, success or failure); the retire sweep calls it for retired rows. N-1: unknown-kind on an older broker = tolerated send_error path, caller best-effort. Rider: spawned daemon threads NAMED (SubscriberSeat writer sub-writer-s<id> minimum, conn accept handlers) — field censuses attribute, not infer. Gate: impl — verb + worker/sweep call sites + thread naming; unit — unsubscribe removes seat/joins writer/drops cursor + idempotent + unknown-stream tolerated; int — rides REQ-HAZARD-REGISTRY-STALL seam (physical seat/thread counts plateau CROSS-FAMILY after completion); doc — ADR-0040.",
2026-07-26T22:33:03.2753944Z       "requiredStages": [
2026-07-26T22:33:03.2754076Z         "doc",
2026-07-26T22:33:03.2754157Z         "impl",
2026-07-26T22:33:03.2754239Z         "unit",
2026-07-26T22:33:03.2754325Z         "int"
2026-07-26T22:33:03.2754410Z       ],
2026-07-26T22:33:03.2754491Z       "stages": {
2026-07-26T22:33:03.2754573Z         "doc": {
2026-07-26T22:33:03.2754677Z           "complete": true,
2026-07-26T22:33:03.2754762Z           "evidence": [
2026-07-26T22:33:03.2754848Z             {
2026-07-26T22:33:03.2755050Z               "path": "docs/adr/0040-bounded-stream-seat-lifecycle-one-way-terminal.md",
2026-07-26T22:33:03.2755145Z               "line": 72
2026-07-26T22:33:03.2755227Z             }
2026-07-26T22:33:03.2755318Z           ]
2026-07-26T22:33:03.2755388Z         },
2026-07-26T22:33:03.2755484Z         "impl": {
2026-07-26T22:33:03.2755580Z           "complete": true,
2026-07-26T22:33:03.2755675Z           "evidence": [
2026-07-26T22:33:03.2755756Z             {
2026-07-26T22:33:03.2755876Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.2755980Z               "line": 1675
2026-07-26T22:33:03.2756075Z             },
2026-07-26T22:33:03.2756152Z             {
2026-07-26T22:33:03.2756275Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2756366Z               "line": 3856
2026-07-26T22:33:03.2756453Z             },
2026-07-26T22:33:03.2756534Z             {
2026-07-26T22:33:03.2756643Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2756738Z               "line": 4388
2026-07-26T22:33:03.2756820Z             },
2026-07-26T22:33:03.2756900Z             {
2026-07-26T22:33:03.2757010Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2757092Z               "line": 5294
2026-07-26T22:33:03.2757173Z             },
2026-07-26T22:33:03.2757257Z             {
2026-07-26T22:33:03.2757371Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2757462Z               "line": 5805
2026-07-26T22:33:03.2757551Z             },
2026-07-26T22:33:03.2757717Z             {
2026-07-26T22:33:03.2757837Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.2757927Z               "line": 1107
2026-07-26T22:33:03.2758007Z             },
2026-07-26T22:33:03.2758085Z             {
2026-07-26T22:33:03.2758199Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.2758289Z               "line": 1117
2026-07-26T22:33:03.2758375Z             },
2026-07-26T22:33:03.2758451Z             {
2026-07-26T22:33:03.2758566Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.2758656Z               "line": 189
2026-07-26T22:33:03.2758739Z             },
2026-07-26T22:33:03.2758818Z             {
2026-07-26T22:33:03.2758923Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.2759157Z               "line": 653
2026-07-26T22:33:03.2759243Z             },
2026-07-26T22:33:03.2759334Z             {
2026-07-26T22:33:03.2759452Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2759553Z               "line": 204
2026-07-26T22:33:03.2759630Z             },
2026-07-26T22:33:03.2759781Z             {
2026-07-26T22:33:03.2759896Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2759988Z               "line": 249
2026-07-26T22:33:03.2760073Z             },
2026-07-26T22:33:03.2760167Z             {
2026-07-26T22:33:03.2760330Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2760416Z               "line": 610
2026-07-26T22:33:03.2760501Z             },
2026-07-26T22:33:03.2760591Z             {
2026-07-26T22:33:03.2760702Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2760796Z               "line": 1911
2026-07-26T22:33:03.2760877Z             },
2026-07-26T22:33:03.2760959Z             {
2026-07-26T22:33:03.2761083Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2761163Z               "line": 1955
2026-07-26T22:33:03.2761302Z             },
2026-07-26T22:33:03.2761388Z             {
2026-07-26T22:33:03.2761506Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2761594Z               "line": 1980
2026-07-26T22:33:03.2761684Z             },
2026-07-26T22:33:03.2761760Z             {
2026-07-26T22:33:03.2761874Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2761961Z               "line": 2127
2026-07-26T22:33:03.2762055Z             },
2026-07-26T22:33:03.2762131Z             {
2026-07-26T22:33:03.2762261Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.2762346Z               "line": 365
2026-07-26T22:33:03.2762440Z             },
2026-07-26T22:33:03.2762516Z             {
2026-07-26T22:33:03.2762640Z               "path": "crates/spt-daemon/src/sync.rs",
2026-07-26T22:33:03.2762729Z               "line": 356
2026-07-26T22:33:03.2762819Z             }
2026-07-26T22:33:03.2762891Z           ]
2026-07-26T22:33:03.2762973Z         },
2026-07-26T22:33:03.2763062Z         "int": {
2026-07-26T22:33:03.2763158Z           "complete": true,
2026-07-26T22:33:03.2763245Z           "evidence": [
2026-07-26T22:33:03.2763344Z             {
2026-07-26T22:33:03.2763477Z               "path": "crates/spt-daemon/tests/registry_lifecycle.rs",
2026-07-26T22:33:03.2763569Z               "line": 166
2026-07-26T22:33:03.2763654Z             }
2026-07-26T22:33:03.2763749Z           ]
2026-07-26T22:33:03.2763831Z         },
2026-07-26T22:33:03.2763926Z         "unit": {
2026-07-26T22:33:03.2764016Z           "complete": true,
2026-07-26T22:33:03.2764111Z           "evidence": [
2026-07-26T22:33:03.2764193Z             {
2026-07-26T22:33:03.2764317Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2764407Z               "line": 3150
2026-07-26T22:33:03.2764494Z             },
2026-07-26T22:33:03.2764574Z             {
2026-07-26T22:33:03.2764693Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2764781Z               "line": 3192
2026-07-26T22:33:03.2764931Z             }
2026-07-26T22:33:03.2765008Z           ]
2026-07-26T22:33:03.2765090Z         }
2026-07-26T22:33:03.2765176Z       }
2026-07-26T22:33:03.2765274Z     },
2026-07-26T22:33:03.2765355Z     {
2026-07-26T22:33:03.2765450Z       "id": "REQ-SEC-1",
2026-07-26T22:33:03.2765835Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-07-26T22:33:03.2765939Z       "requiredStages": [
2026-07-26T22:33:03.2766029Z         "impl",
2026-07-26T22:33:03.2766102Z         "unit"
2026-07-26T22:33:03.2766193Z       ],
2026-07-26T22:33:03.2766277Z       "stages": {
2026-07-26T22:33:03.2766359Z         "doc": {
2026-07-26T22:33:03.2766441Z           "complete": false,
2026-07-26T22:33:03.2766541Z           "evidence": []
2026-07-26T22:33:03.2766616Z         },
2026-07-26T22:33:03.2766703Z         "impl": {
2026-07-26T22:33:03.2766798Z           "complete": true,
2026-07-26T22:33:03.2766884Z           "evidence": [
2026-07-26T22:33:03.2766969Z             {
2026-07-26T22:33:03.2767085Z               "path": "crates/spt-daemon/src/access.rs",
2026-07-26T22:33:03.2767226Z               "line": 86
2026-07-26T22:33:03.2767323Z             },
2026-07-26T22:33:03.2767404Z             {
2026-07-26T22:33:03.2767522Z               "path": "crates/spt-daemon/src/access.rs",
2026-07-26T22:33:03.2767648Z               "line": 116
2026-07-26T22:33:03.2767733Z             },
2026-07-26T22:33:03.2767812Z             {
2026-07-26T22:33:03.2767931Z               "path": "crates/spt-daemon/src/access.rs",
2026-07-26T22:33:03.2768022Z               "line": 130
2026-07-26T22:33:03.2768111Z             },
2026-07-26T22:33:03.2768196Z             {
2026-07-26T22:33:03.2768315Z               "path": "crates/spt-store/src/access.rs",
2026-07-26T22:33:03.2768407Z               "line": 109
2026-07-26T22:33:03.2768492Z             },
2026-07-26T22:33:03.2768572Z             {
2026-07-26T22:33:03.2768740Z               "path": "crates/spt-store/src/access.rs",
2026-07-26T22:33:03.2768825Z               "line": 130
2026-07-26T22:33:03.2768926Z             },
2026-07-26T22:33:03.2769084Z             {
2026-07-26T22:33:03.2769206Z               "path": "crates/spt-store/src/access.rs",
2026-07-26T22:33:03.2769294Z               "line": 143
2026-07-26T22:33:03.2769393Z             },
2026-07-26T22:33:03.2769483Z             {
2026-07-26T22:33:03.2769599Z               "path": "crates/spt-store/src/access.rs",
2026-07-26T22:33:03.2769684Z               "line": 209
2026-07-26T22:33:03.2769770Z             },
2026-07-26T22:33:03.2769850Z             {
2026-07-26T22:33:03.2769961Z               "path": "crates/spt-store/src/access.rs",
2026-07-26T22:33:03.2770055Z               "line": 235
2026-07-26T22:33:03.2770142Z             },
2026-07-26T22:33:03.2770219Z             {
2026-07-26T22:33:03.2770323Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2770418Z               "line": 9992
2026-07-26T22:33:03.2770500Z             }
2026-07-26T22:33:03.2770587Z           ]
2026-07-26T22:33:03.2770666Z         },
2026-07-26T22:33:03.2770760Z         "int": {
2026-07-26T22:33:03.2770860Z           "complete": false,
2026-07-26T22:33:03.2770952Z           "evidence": []
2026-07-26T22:33:03.2771037Z         },
2026-07-26T22:33:03.2771127Z         "unit": {
2026-07-26T22:33:03.2771214Z           "complete": true,
2026-07-26T22:33:03.2771314Z           "evidence": [
2026-07-26T22:33:03.2771394Z             {
2026-07-26T22:33:03.2771510Z               "path": "crates/spt-daemon/src/access.rs",
2026-07-26T22:33:03.2771590Z               "line": 142
2026-07-26T22:33:03.2771676Z             },
2026-07-26T22:33:03.2771756Z             {
2026-07-26T22:33:03.2771877Z               "path": "crates/spt-daemon/src/access.rs",
2026-07-26T22:33:03.2771967Z               "line": 194
2026-07-26T22:33:03.2772062Z             },
2026-07-26T22:33:03.2772139Z             {
2026-07-26T22:33:03.2772262Z               "path": "crates/spt-daemon/src/access.rs",
2026-07-26T22:33:03.2772430Z               "line": 235
2026-07-26T22:33:03.2772525Z             },
2026-07-26T22:33:03.2772610Z             {
2026-07-26T22:33:03.2772735Z               "path": "crates/spt-daemon/tests/access.rs",
2026-07-26T22:33:03.2772821Z               "line": 141
2026-07-26T22:33:03.2772896Z             },
2026-07-26T22:33:03.2772977Z             {
2026-07-26T22:33:03.2773100Z               "path": "crates/spt-store/src/access.rs",
2026-07-26T22:33:03.2773186Z               "line": 247
2026-07-26T22:33:03.2773270Z             },
2026-07-26T22:33:03.2773346Z             {
2026-07-26T22:33:03.2773461Z               "path": "crates/spt-store/src/access.rs",
2026-07-26T22:33:03.2773543Z               "line": 277
2026-07-26T22:33:03.2773623Z             },
2026-07-26T22:33:03.2773704Z             {
2026-07-26T22:33:03.2773814Z               "path": "crates/spt-store/src/access.rs",
2026-07-26T22:33:03.2773899Z               "line": 310
2026-07-26T22:33:03.2773994Z             },
2026-07-26T22:33:03.2774077Z             {
2026-07-26T22:33:03.2774195Z               "path": "crates/spt-store/src/access.rs",
2026-07-26T22:33:03.2774348Z               "line": 329
2026-07-26T22:33:03.2774429Z             },
2026-07-26T22:33:03.2774519Z             {
2026-07-26T22:33:03.2774633Z               "path": "crates/spt-store/src/access.rs",
2026-07-26T22:33:03.2774730Z               "line": 362
2026-07-26T22:33:03.2774858Z             },
2026-07-26T22:33:03.2774943Z             {
2026-07-26T22:33:03.2775054Z               "path": "crates/spt-store/src/access.rs",
2026-07-26T22:33:03.2775149Z               "line": 386
2026-07-26T22:33:03.2775225Z             },
2026-07-26T22:33:03.2775311Z             {
2026-07-26T22:33:03.2775417Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2775506Z               "line": 15854
2026-07-26T22:33:03.2775577Z             }
2026-07-26T22:33:03.2775670Z           ]
2026-07-26T22:33:03.2775746Z         }
2026-07-26T22:33:03.2775887Z       }
2026-07-26T22:33:03.2775968Z     },
2026-07-26T22:33:03.2776049Z     {
2026-07-26T22:33:03.2776152Z       "id": "REQ-SELF-DETECT-PARENT-PID",
2026-07-26T22:33:03.2780813Z       "title": "E-1 (REMOTE-TRUTH triage §E-1 #7): self-detect leg (c) — the pid-ancestry fallback — ALSO candidates on `rec.parent_pid` (the harness pid, CONTEXT's 'stable session-binding anchor', stamped at bind), not `rec.pid` alone. ROOT: for an spt-hosted endpoint (broker PTY, headless) `rec.pid` is the ephemeral bind-CLI pid, ALREADY DEAD by send time (the F-026 #11 dead-pid class, field-sighted on hall-bf) — never in any sender's ancestry and alive-gated out — so an spt-hosted sender could NEVER resolve self via leg (c): its messages were from-stamped `cli@NODE` (operator #7) and replies bounced NO_PERCH. FIX: detect_self_by_ancestry pushes a second candidate (id, parent_pid) when `rec.parent_pid` is Some + alive; the pure nearest-first matcher (match_self_by_ancestry) is unchanged. LABEL-ONLY, exactly like the rest of leg (c): from-label/routing default, NEVER authentication — authenticate() untouched, the pid-ancestry-for-auth question stays parked (KH 7.3/7.5 separation holds; a wrong label self-corrects, a wrong grant does not). Env legs (a)/(b) stay first. Red-first int (the triage-specified missing test): rec.pid = dead sibling + rec.parent_pid = genuine live ancestor → self resolves (pre-fix None); ancestry-gate control: live-but-non-ancestor parent_pid must NOT resolve. Rider (same cluster, activated separately once doyle rules the fix shape): F-026 #11 dead-pid itself — rec.pid should hold something that stays true, or liveness readers stop trusting it. Cross-node from-stamp proof (spt-hosted B-side sender arrives at A as `<id>@node`, not `cli@node`) rides the [twohost] rig wave rung.",
2026-07-26T22:33:03.2780949Z       "requiredStages": [
2026-07-26T22:33:03.2781031Z         "impl",
2026-07-26T22:33:03.2781123Z         "int"
2026-07-26T22:33:03.2781203Z       ],
2026-07-26T22:33:03.2781297Z       "stages": {
2026-07-26T22:33:03.2781445Z         "doc": {
2026-07-26T22:33:03.2781541Z           "complete": false,
2026-07-26T22:33:03.2781640Z           "evidence": []
2026-07-26T22:33:03.2781731Z         },
2026-07-26T22:33:03.2781817Z         "impl": {
2026-07-26T22:33:03.2781912Z           "complete": true,
2026-07-26T22:33:03.2782002Z           "evidence": [
2026-07-26T22:33:03.2782085Z             {
2026-07-26T22:33:03.2782198Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:03.2782279Z               "line": 206
2026-07-26T22:33:03.2782370Z             }
2026-07-26T22:33:03.2782442Z           ]
2026-07-26T22:33:03.2782537Z         },
2026-07-26T22:33:03.2782636Z         "int": {
2026-07-26T22:33:03.2782733Z           "complete": true,
2026-07-26T22:33:03.2782808Z           "evidence": [
2026-07-26T22:33:03.2782889Z             {
2026-07-26T22:33:03.2782990Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:03.2783090Z               "line": 362
2026-07-26T22:33:03.2783175Z             },
2026-07-26T22:33:03.2783266Z             {
2026-07-26T22:33:03.2783363Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:03.2783518Z               "line": 389
2026-07-26T22:33:03.2783599Z             },
2026-07-26T22:33:03.2783685Z             {
2026-07-26T22:33:03.2783807Z               "path": "crates/spt/tests/twohost_cli.rs",
2026-07-26T22:33:03.2783906Z               "line": 810
2026-07-26T22:33:03.2784040Z             }
2026-07-26T22:33:03.2784122Z           ]
2026-07-26T22:33:03.2784206Z         },
2026-07-26T22:33:03.2784302Z         "unit": {
2026-07-26T22:33:03.2784384Z           "complete": false,
2026-07-26T22:33:03.2784488Z           "evidence": []
2026-07-26T22:33:03.2784568Z         }
2026-07-26T22:33:03.2784660Z       }
2026-07-26T22:33:03.2784732Z     },
2026-07-26T22:33:03.2784822Z     {
2026-07-26T22:33:03.2784937Z       "id": "REQ-SELF-ID-TRUST-INJECTED-ENV",
2026-07-26T22:33:03.2790443Z       "title": "DEFERRED to a followup vX.X.n sprint (post-LIFECYCLE-TRUTH, operator-ruled 2026-07-07): self-identity resolution must trust the harness-injected authoritative id and detect a stomped perch instead of silently mis-attributing. ROOT (doyle /diagnose 2026-07-07, field: agent sends stamped `cli@HFENDULEAM` / mis-attributed): `resolve_from` (cli.rs:5480) stamps `cli@<node>` when `detect_self_id` (roster.rs:103) returns None; detect_self_id resolves self ONLY by reverse-lookup — matching `$OWL_SESSION_ID` against a perch's info.json.session_id (then SPT_AGENT_ID, then parent_pid) — and IGNORES `SPT_ENDPOINT_ID`, the authoritative self-id the adapter injects (present in-env as SPT_ENDPOINT_ID=<id>). When a perch record is STOMPED (a cross-id info.json overwrite — the REQ-SPAWN-COLLISION-GUARD-LIVE-DUP damage class; field case: doyle's live session_id written into the deployah perch), the reverse-lookup mis-resolves (doyle session -> `deployah`) or fails (real deployah -> None -> `cli@node`), and the CLI silently believes the stomped store. FIX: detect_self_id PREFERS `SPT_ENDPOINT_ID` when set+non-empty (the harness-authoritative id, immune to a stompable perch), AND cross-checks it against the reverse-resolved perch id — a mismatch logs LOUD (a stomped/duplicated perch becomes a self-diagnosing signal, not a silent wrong identity). Bare-CLI (no SPT_ENDPOINT_ID) keeps the reverse-lookup then the `cli@node` fallback. Also reconcile the adapter/core self-id env contract (SPT_ENDPOINT_ID vs SPT_AGENT_ID vs OWL_SESSION_ID — which is canonical). NOTE: W4 REQ-SPAWN-COLLISION-GUARD-LIVE-DUP prevents FUTURE stomps but does not heal existing corruption nor add this resolution-robustness; recovery of a live stomp today is a manual `api boundary clear <id> --to-session-id <sid> --session-id <current>` re-bind (doyle recovered the doyle/deployah cross-wire this way 2026-07-07).",
2026-07-26T22:33:03.2790675Z       "requiredStages": [],
2026-07-26T22:33:03.2790767Z       "stages": {
2026-07-26T22:33:03.2790847Z         "doc": {
2026-07-26T22:33:03.2790952Z           "complete": false,
2026-07-26T22:33:03.2791091Z           "evidence": []
2026-07-26T22:33:03.2791170Z         },
2026-07-26T22:33:03.2791252Z         "impl": {
2026-07-26T22:33:03.2791368Z           "complete": false,
2026-07-26T22:33:03.2791453Z           "evidence": []
2026-07-26T22:33:03.2791581Z         },
2026-07-26T22:33:03.2791692Z         "int": {
2026-07-26T22:33:03.2791823Z           "complete": false,
2026-07-26T22:33:03.2791957Z           "evidence": []
2026-07-26T22:33:03.2792092Z         },
2026-07-26T22:33:03.2792247Z         "unit": {
2026-07-26T22:33:03.2792391Z           "complete": false,
2026-07-26T22:33:03.2792490Z           "evidence": []
2026-07-26T22:33:03.2792571Z         }
2026-07-26T22:33:03.2792654Z       }
2026-07-26T22:33:03.2792739Z     },
2026-07-26T22:33:03.2792824Z     {
2026-07-26T22:33:03.2792939Z       "id": "REQ-SEND-REPLYTO-REMOVE",
2026-07-26T22:33:03.2794325Z       "title": "Remove `--reply-to` from `spt send` — a target-fallback + REPLIED-label nicety that confuses agents, with no wire effect (ADR-0020 already made messages structural (from,body), no __REPLY_TO__). Hard-remove (no deprecation shim): the clap flag, the is_reply/REPLIED label branch (always SENT/QUEUED), the `send` how-to --reply-to example, and the reply-to mention in REQ-DOCS-6's send topic. Reply-correlation stays on the structural `from` attribute. (v0.16.0)",
2026-07-26T22:33:03.2794519Z       "requiredStages": [
2026-07-26T22:33:03.2794658Z         "impl",
2026-07-26T22:33:03.2794734Z         "unit"
2026-07-26T22:33:03.2794814Z       ],
2026-07-26T22:33:03.2794891Z       "stages": {
2026-07-26T22:33:03.2794972Z         "doc": {
2026-07-26T22:33:03.2795053Z           "complete": false,
2026-07-26T22:33:03.2795153Z           "evidence": []
2026-07-26T22:33:03.2795230Z         },
2026-07-26T22:33:03.2795316Z         "impl": {
2026-07-26T22:33:03.2795406Z           "complete": true,
2026-07-26T22:33:03.2795492Z           "evidence": [
2026-07-26T22:33:03.2795573Z             {
2026-07-26T22:33:03.2795677Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2795811Z               "line": 72
2026-07-26T22:33:03.2795902Z             }
2026-07-26T22:33:03.2795983Z           ]
2026-07-26T22:33:03.2796064Z         },
2026-07-26T22:33:03.2796146Z         "int": {
2026-07-26T22:33:03.2796245Z           "complete": false,
2026-07-26T22:33:03.2796326Z           "evidence": []
2026-07-26T22:33:03.2796417Z         },
2026-07-26T22:33:03.2796499Z         "unit": {
2026-07-26T22:33:03.2796602Z           "complete": true,
2026-07-26T22:33:03.2796693Z           "evidence": [
2026-07-26T22:33:03.2796775Z             {
2026-07-26T22:33:03.2796880Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2796974Z               "line": 17883
2026-07-26T22:33:03.2797059Z             }
2026-07-26T22:33:03.2797131Z           ]
2026-07-26T22:33:03.2797206Z         }
2026-07-26T22:33:03.2797300Z       }
2026-07-26T22:33:03.2797376Z     },
2026-07-26T22:33:03.2797467Z     {
2026-07-26T22:33:03.2797572Z       "id": "REQ-SEND-SPT-HOSTED",
2026-07-26T22:33:03.2801265Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-07-26T22:33:03.2801446Z       "requiredStages": [
2026-07-26T22:33:03.2801536Z         "impl",
2026-07-26T22:33:03.2801608Z         "unit",
2026-07-26T22:33:03.2801698Z         "int"
2026-07-26T22:33:03.2801793Z       ],
2026-07-26T22:33:03.2801895Z       "stages": {
2026-07-26T22:33:03.2801985Z         "doc": {
2026-07-26T22:33:03.2802089Z           "complete": false,
2026-07-26T22:33:03.2802180Z           "evidence": []
2026-07-26T22:33:03.2802257Z         },
2026-07-26T22:33:03.2802342Z         "impl": {
2026-07-26T22:33:03.2802441Z           "complete": true,
2026-07-26T22:33:03.2802531Z           "evidence": [
2026-07-26T22:33:03.2802613Z             {
2026-07-26T22:33:03.2802731Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.2802836Z               "line": 1768
2026-07-26T22:33:03.2802914Z             },
2026-07-26T22:33:03.2803004Z             {
2026-07-26T22:33:03.2803185Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2803285Z               "line": 5129
2026-07-26T22:33:03.2803366Z             },
2026-07-26T22:33:03.2803456Z             {
2026-07-26T22:33:03.2807384Z               "path": "crates/spt-daemon/src/inject.rs",
2026-07-26T22:33:03.2807614Z               "line": 36
2026-07-26T22:33:03.2807715Z             },
2026-07-26T22:33:03.2807808Z             {
2026-07-26T22:33:03.2807946Z               "path": "crates/spt-daemon/src/inject.rs",
2026-07-26T22:33:03.2808032Z               "line": 74
2026-07-26T22:33:03.2808114Z             }
2026-07-26T22:33:03.2808199Z           ]
2026-07-26T22:33:03.2808284Z         },
2026-07-26T22:33:03.2808371Z         "int": {
2026-07-26T22:33:03.2808471Z           "complete": true,
2026-07-26T22:33:03.2808565Z           "evidence": [
2026-07-26T22:33:03.2808695Z             {
2026-07-26T22:33:03.2808833Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-07-26T22:33:03.2808928Z               "line": 196
2026-07-26T22:33:03.2809086Z             },
2026-07-26T22:33:03.2809167Z             {
2026-07-26T22:33:03.2809283Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-07-26T22:33:03.2809377Z               "line": 543
2026-07-26T22:33:03.2809462Z             }
2026-07-26T22:33:03.2809539Z           ]
2026-07-26T22:33:03.2809621Z         },
2026-07-26T22:33:03.2809706Z         "unit": {
2026-07-26T22:33:03.2809806Z           "complete": true,
2026-07-26T22:33:03.2809883Z           "evidence": [
2026-07-26T22:33:03.2809964Z             {
2026-07-26T22:33:03.2810086Z               "path": "crates/spt-daemon/src/inject.rs",
2026-07-26T22:33:03.2810172Z               "line": 194
2026-07-26T22:33:03.2810258Z             },
2026-07-26T22:33:03.2810342Z             {
2026-07-26T22:33:03.2810465Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.2810561Z               "line": 1571
2026-07-26T22:33:03.2810652Z             },
2026-07-26T22:33:03.2810728Z             {
2026-07-26T22:33:03.2810837Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2810924Z               "line": 14270
2026-07-26T22:33:03.2811005Z             }
2026-07-26T22:33:03.2811080Z           ]
2026-07-26T22:33:03.2811166Z         }
2026-07-26T22:33:03.2811248Z       }
2026-07-26T22:33:03.2811333Z     },
2026-07-26T22:33:03.2811413Z     {
2026-07-26T22:33:03.2811520Z       "id": "REQ-SEND-STAMP-AGENT-ID",
2026-07-26T22:33:03.2815165Z       "title": "MSG-IDENTITY W4 / endpoint-identity (operator-flagged 2026-07-09 + live-confirmed on flynn's F-038 ask arriving 'cli@HFENDULEAM'): a live agent's own CLI `spt send <target>` MUST stamp from_id with the AGENT id (e.g. 'doyle'), not the node fallback 'cli@<node>' — today the agent-id stamp rides ONLY the adapter/perch shortform path, so any agent shelling out `spt send` (the DOCUMENTED reach-another-agent form) presents to recipients as an anonymous node CLI: replies mis-route (recipients answer cli@node — no perch — instead of the sender), and the F-036 victim-effect ('sends downgraded to from:cli@node') is indistinguishable from normal CLI traffic. FIX: send-time self-resolve — when the calling process/session maps to a bound live perch on this node (the session-pin/seed machinery already resolves this for bind), stamp that endpoint id as from_id; a genuinely perchless CLI keeps 'cli@<node>'. Gate: unit — a send from a session bound to a live perch stamps the endpoint id; a perchless shell keeps the node stamp; int — recipient's EVENT from= carries the agent id for a shelled-out send from a live session. Kin F-036 victim effects, EVENT envelope (ADR-0020), [[owl-send-not-legacy-spt-send]] (adapter-path stamp works today — this closes the CLI-path gap).",
2026-07-26T22:33:03.2815346Z       "requiredStages": [
2026-07-26T22:33:03.2815440Z         "impl",
2026-07-26T22:33:03.2815520Z         "unit",
2026-07-26T22:33:03.2815610Z         "int"
2026-07-26T22:33:03.2815692Z       ],
2026-07-26T22:33:03.2815783Z       "stages": {
2026-07-26T22:33:03.2815925Z         "doc": {
2026-07-26T22:33:03.2816026Z           "complete": false,
2026-07-26T22:33:03.2816117Z           "evidence": []
2026-07-26T22:33:03.2816201Z         },
2026-07-26T22:33:03.2816288Z         "impl": {
2026-07-26T22:33:03.2816426Z           "complete": true,
2026-07-26T22:33:03.2816506Z           "evidence": [
2026-07-26T22:33:03.2816588Z             {
2026-07-26T22:33:03.2816703Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:03.2816802Z               "line": 161
2026-07-26T22:33:03.2816883Z             }
2026-07-26T22:33:03.2816966Z           ]
2026-07-26T22:33:03.2817036Z         },
2026-07-26T22:33:03.2817131Z         "int": {
2026-07-26T22:33:03.2817222Z           "complete": true,
2026-07-26T22:33:03.2817314Z           "evidence": [
2026-07-26T22:33:03.2817398Z             {
2026-07-26T22:33:03.2817605Z               "path": "crates/spt/tests/send_stamp_agent_id_e2e.rs",
2026-07-26T22:33:03.2817703Z               "line": 49
2026-07-26T22:33:03.2817804Z             }
2026-07-26T22:33:03.2817886Z           ]
2026-07-26T22:33:03.2818004Z         },
2026-07-26T22:33:03.2818094Z         "unit": {
2026-07-26T22:33:03.2818184Z           "complete": true,
2026-07-26T22:33:03.2818280Z           "evidence": [
2026-07-26T22:33:03.2818359Z             {
2026-07-26T22:33:03.2818477Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:03.2818597Z               "line": 461
2026-07-26T22:33:03.2818726Z             }
2026-07-26T22:33:03.2818845Z           ]
2026-07-26T22:33:03.2818926Z         }
2026-07-26T22:33:03.2819078Z       }
2026-07-26T22:33:03.2819164Z     },
2026-07-26T22:33:03.2819251Z     {
2026-07-26T22:33:03.2819374Z       "id": "REQ-SEND-WINDOW-DRAIN-HONOR",
2026-07-26T22:33:03.2824391Z       "title": "F-035 (field finding 2026-07-09): active_only = POLL-ONLY for a relay-bearing live agent -- it must NEVER be RELAY-delivered (its contract is 'active hook window only, never wakes' per spool.rs WINDOW_ACTIVE_ONLY doc + cli.rs:85; `spt send --active-only` / the hidden `--deferred` alias and `send_deferred` shell-context mint it). FIELD SYMPTOM: lia (a full live agent -- relay-for-idle, poll-for-busy) surfaced an --active-only msg on her IDLE RELAY. RCA JOURNEY: v1 RCA (docs/F-035-RCA.md) analyzed the WRONG class (spt-hosted-relay-LESS, the idle-edge inject leg) and proposed a COLLAPSE that would have broken the shipped F-023 anti-starvation gate (docs/F-035-CONFLICT.md); operator reclassified to a relay-bearing live agent; the relay-class re-RCA (docs/F-035-RELAY-RCA.md) traced EVERY active_only->relay carrier and found them ALL ALREADY GUARDED on main@2c05dc9 -- so spt-core has NO code bug. doyle FINAL RULING: the real leak is the ADAPTER's busy->idle poll->idle-representation handoff (spt-claude-code -- a legitimate `api poll` on going idle drains active_only, then the adapter renders it into the idle/relay surface), OUTSIDE spt-core; perri's lane. spt-core DELIVERABLE = a REGRESSION GUARD (tests only, NO behavior change) locking the 3 load-bearing guards that keep active_only off a relay: (1) send_windowed:217 -- an active_only send SKIPS deliver_tcp (never rides a live relay's TCP channel), spools poll-only; (2) cli.rs:5762 -- a cross-node active_only send stays LOCAL-ONLY (the WanMessage wire record has no window field, so shipping it would strip the class and relay-deliver at the far node); (3) relay.rs drain_backlog -> drain_non_deferred (deferred=0) -- the relay backlog NEVER forwards an active_only (deferred=1) row. Guard suite: unit (send_windowed active_only-skips-tcp-to-live-relay + relay_backlog-never-drains-active_only) + int (cross-node active_only stays local-only, never WAN, while a default send to the same remote target DOES take the WAN leg). Kin REQ-MSG-DELIVERY-AXES + REQ-MSG-IDLE-EDGE-DRAIN + REQ-INST-6.",
2026-07-26T22:33:03.2824586Z       "requiredStages": [
2026-07-26T22:33:03.2824668Z         "unit",
2026-07-26T22:33:03.2824762Z         "int"
2026-07-26T22:33:03.2824838Z       ],
2026-07-26T22:33:03.2824935Z       "stages": {
2026-07-26T22:33:03.2825063Z         "doc": {
2026-07-26T22:33:03.2825158Z           "complete": true,
2026-07-26T22:33:03.2825245Z           "evidence": [
2026-07-26T22:33:03.2825326Z             {
2026-07-26T22:33:03.2825425Z               "path": "docs/F-035-RCA.md",
2026-07-26T22:33:03.2825584Z               "line": 1
2026-07-26T22:33:03.2825669Z             }
2026-07-26T22:33:03.2825758Z           ]
2026-07-26T22:33:03.2825830Z         },
2026-07-26T22:33:03.2825911Z         "impl": {
2026-07-26T22:33:03.2826010Z           "complete": false,
2026-07-26T22:33:03.2826104Z           "evidence": []
2026-07-26T22:33:03.2826179Z         },
2026-07-26T22:33:03.2826271Z         "int": {
2026-07-26T22:33:03.2826353Z           "complete": true,
2026-07-26T22:33:03.2826432Z           "evidence": [
2026-07-26T22:33:03.2826509Z             {
2026-07-26T22:33:03.2826714Z               "path": "crates/spt/tests/active_only_never_relay_e2e.rs",
2026-07-26T22:33:03.2826800Z               "line": 98
2026-07-26T22:33:03.2826887Z             }
2026-07-26T22:33:03.2826967Z           ]
2026-07-26T22:33:03.2827043Z         },
2026-07-26T22:33:03.2827129Z         "unit": {
2026-07-26T22:33:03.2827225Z           "complete": true,
2026-07-26T22:33:03.2827306Z           "evidence": [
2026-07-26T22:33:03.2827395Z             {
2026-07-26T22:33:03.2827516Z               "path": "crates/spt-daemon/src/relay.rs",
2026-07-26T22:33:03.2827597Z               "line": 145
2026-07-26T22:33:03.2827678Z             },
2026-07-26T22:33:03.2827768Z             {
2026-07-26T22:33:03.2827884Z               "path": "crates/spt-msg/src/deliver.rs",
2026-07-26T22:33:03.2827982Z               "line": 275
2026-07-26T22:33:03.2828063Z             }
2026-07-26T22:33:03.2828150Z           ]
2026-07-26T22:33:03.2828236Z         }
2026-07-26T22:33:03.2828321Z       }
2026-07-26T22:33:03.2828407Z     },
2026-07-26T22:33:03.2828489Z     {
2026-07-26T22:33:03.2828602Z       "id": "REQ-SERVE-OWNERSHIP-GENERATION",
2026-07-26T22:33:03.2831767Z       "title": "REDISPATCH-STALL W1 (ADR-0038 Amendment, fix 6): terminal-exclusion enforced PRE-SERVE + ownership/generation validation on attach/detach — a stale worker can never detach or displace a REPLACEMENT controller (today detach_if compares Arc ptr identity only; the serve path re-checks nothing at completion). Covers the UNFINISHED-stale-row control-steal shape (raw-close no-FIN viewports, emphasys C2 leak class feeding it) that finished-row retirement (D1/D1b) definitionally cannot see — the discriminating field observable on the next live steal catch = the stolen row's finished+retired flags. Gate: impl — pre-serve terminal exclusion + generation/ownership tokens on attach/detach; unit — stale-generation detach refused while the same-generation detach lands; int — T6 (UNFINISHED-stale attach row + live current controller + dispatcher restart: neither takes nor clears the replacement, D1/D1b green alongside); doc — ADR-0038 Amendment. Kin REQ-HAZARD-REDISPATCH-CONTROL-STEAL (the finished sibling), REQ-REDISPATCH-FINISHED-RETIRE.",
2026-07-26T22:33:03.2831948Z       "requiredStages": [
2026-07-26T22:33:03.2832029Z         "doc",
2026-07-26T22:33:03.2832106Z         "impl",
2026-07-26T22:33:03.2832196Z         "unit",
2026-07-26T22:33:03.2832272Z         "int"
2026-07-26T22:33:03.2832358Z       ],
2026-07-26T22:33:03.2832439Z       "stages": {
2026-07-26T22:33:03.2832529Z         "doc": {
2026-07-26T22:33:03.2832621Z           "complete": true,
2026-07-26T22:33:03.2832706Z           "evidence": [
2026-07-26T22:33:03.2832787Z             {
2026-07-26T22:33:03.2832945Z               "path": "docs/adr/0038-broker-stream-lifecycle-truth.md",
2026-07-26T22:33:03.2833030Z               "line": 76
2026-07-26T22:33:03.2833102Z             }
2026-07-26T22:33:03.2833182Z           ]
2026-07-26T22:33:03.2833275Z         },
2026-07-26T22:33:03.2833355Z         "impl": {
2026-07-26T22:33:03.2833460Z           "complete": true,
2026-07-26T22:33:03.2833546Z           "evidence": [
2026-07-26T22:33:03.2833627Z             {
2026-07-26T22:33:03.2833808Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:03.2833904Z               "line": 164
2026-07-26T22:33:03.2833980Z             },
2026-07-26T22:33:03.2834069Z             {
2026-07-26T22:33:03.2834192Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:03.2834332Z               "line": 686
2026-07-26T22:33:03.2834408Z             },
2026-07-26T22:33:03.2834493Z             {
2026-07-26T22:33:03.2834604Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.2834689Z               "line": 1908
2026-07-26T22:33:03.2834774Z             },
2026-07-26T22:33:03.2834861Z             {
2026-07-26T22:33:03.2834970Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2835065Z               "line": 1822
2026-07-26T22:33:03.2835146Z             },
2026-07-26T22:33:03.2835295Z             {
2026-07-26T22:33:03.2835408Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2835510Z               "line": 2178
2026-07-26T22:33:03.2835591Z             },
2026-07-26T22:33:03.2835686Z             {
2026-07-26T22:33:03.2835810Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.2835900Z               "line": 870
2026-07-26T22:33:03.2835985Z             },
2026-07-26T22:33:03.2836066Z             {
2026-07-26T22:33:03.2836182Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.2836276Z               "line": 495
2026-07-26T22:33:03.2836356Z             }
2026-07-26T22:33:03.2836442Z           ]
2026-07-26T22:33:03.2836518Z         },
2026-07-26T22:33:03.2836603Z         "int": {
2026-07-26T22:33:03.2836683Z           "complete": true,
2026-07-26T22:33:03.2836779Z           "evidence": [
2026-07-26T22:33:03.2836865Z             {
2026-07-26T22:33:03.2837002Z               "path": "crates/spt-daemon/tests/redispatch_stall.rs",
2026-07-26T22:33:03.2837098Z               "line": 640
2026-07-26T22:33:03.2837175Z             }
2026-07-26T22:33:03.2837256Z           ]
2026-07-26T22:33:03.2837341Z         },
2026-07-26T22:33:03.2837427Z         "unit": {
2026-07-26T22:33:03.2837513Z           "complete": true,
2026-07-26T22:33:03.2837608Z           "evidence": [
2026-07-26T22:33:03.2837689Z             {
2026-07-26T22:33:03.2837809Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2837900Z               "line": 8280
2026-07-26T22:33:03.2837984Z             },
2026-07-26T22:33:03.2838067Z             {
2026-07-26T22:33:03.2838180Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2838270Z               "line": 8352
2026-07-26T22:33:03.2838362Z             },
2026-07-26T22:33:03.2838439Z             {
2026-07-26T22:33:03.2838547Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.2838638Z               "line": 8414
2026-07-26T22:33:03.2838730Z             }
2026-07-26T22:33:03.2838852Z           ]
2026-07-26T22:33:03.2839011Z         }
2026-07-26T22:33:03.2839088Z       }
2026-07-26T22:33:03.2839176Z     },
2026-07-26T22:33:03.2839252Z     {
2026-07-26T22:33:03.2839366Z       "id": "REQ-SESSION-ADAPTER-RECORDED",
2026-07-26T22:33:03.2844072Z       "title": "D-2 (REMOTE-TRUTH triage §D-2 + operator Q5 @c248afc): the session ledger records the adapter[:profile] a session ran under, so a later resume can restore the harness the session actually used (not merely the endpoint's CURRENT stamp). ROOT: SessionEntry (spt-store/sessions.rs:58) carries ts/session_id/trigger/cwd/ordinal but NOT the adapter — a resume-from-history row cannot know which harness authored the transcript, so a resume under a since-changed endpoint adapter (B-2 ChangeAdapter, or a fork) launches the wrong harness. FIX: an ADDITIVE `adapter: Option<String>` on SessionEntry, exact cwd/ordinal serde pattern (#[serde(default, skip_serializing_if=\"Option::is_none\")]) — a pre-migration row missing the key deserializes None; None omits the key on serialize (byte-identical to old rows); an unknown key on an old reader is ignored (serde default) — back-compat BOTH directions. Stamped at every PRODUCTION session-boundary append. CENSUS (doyle-confirmed @94f0205, corrects the triage-era 5-site drift to the real 3): startup.rs:317 (live bind boot row, rec.adapter in scope), reporting.rs:94 (boundary rotation row UNDER the mutate_info lock, capture adapter_for_ledger=rec.adapter beside cwd_for_ledger), ready.rs:119 in crates/spt-msg (ready-agent boot row, rec.adapter in scope). NOT digest.rs:601 (cfg(test) fixture) and NOT a livehost psyche-ledger append (none exists — the live /clear|/compact boundary shells `api boundary` → reporting.rs:94, the SAME append). None-stamp is a benign degrade (resume falls back to the endpoint's current adapter).",
2026-07-26T22:33:03.2844291Z       "requiredStages": [
2026-07-26T22:33:03.2844363Z         "impl",
2026-07-26T22:33:03.2844450Z         "unit"
2026-07-26T22:33:03.2844573Z       ],
2026-07-26T22:33:03.2844658Z       "stages": {
2026-07-26T22:33:03.2844748Z         "doc": {
2026-07-26T22:33:03.2844849Z           "complete": false,
2026-07-26T22:33:03.2844939Z           "evidence": []
2026-07-26T22:33:03.2845024Z         },
2026-07-26T22:33:03.2845106Z         "impl": {
2026-07-26T22:33:03.2845206Z           "complete": true,
2026-07-26T22:33:03.2845301Z           "evidence": [
2026-07-26T22:33:03.2845382Z             {
2026-07-26T22:33:03.2845497Z               "path": "crates/spt-msg/src/ready.rs",
2026-07-26T22:33:03.2845583Z               "line": 131
2026-07-26T22:33:03.2845672Z             },
2026-07-26T22:33:03.2845755Z             {
2026-07-26T22:33:03.2845869Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:03.2845954Z               "line": 92
2026-07-26T22:33:03.2846036Z             },
2026-07-26T22:33:03.2846117Z             {
2026-07-26T22:33:03.2846241Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.2846326Z               "line": 129
2026-07-26T22:33:03.2846408Z             },
2026-07-26T22:33:03.2846489Z             {
2026-07-26T22:33:03.2846608Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.2846699Z               "line": 544
2026-07-26T22:33:03.2846789Z             }
2026-07-26T22:33:03.2846860Z           ]
2026-07-26T22:33:03.2846950Z         },
2026-07-26T22:33:03.2847041Z         "int": {
2026-07-26T22:33:03.2847130Z           "complete": false,
2026-07-26T22:33:03.2847219Z           "evidence": []
2026-07-26T22:33:03.2847295Z         },
2026-07-26T22:33:03.2847372Z         "unit": {
2026-07-26T22:33:03.2847473Z           "complete": true,
2026-07-26T22:33:03.2847572Z           "evidence": [
2026-07-26T22:33:03.2847653Z             {
2026-07-26T22:33:03.2847772Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:03.2847872Z               "line": 326
2026-07-26T22:33:03.2847953Z             },
2026-07-26T22:33:03.2848040Z             {
2026-07-26T22:33:03.2848210Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:03.2848303Z               "line": 350
2026-07-26T22:33:03.2848393Z             }
2026-07-26T22:33:03.2848483Z           ]
2026-07-26T22:33:03.2848564Z         }
2026-07-26T22:33:03.2848655Z       }
2026-07-26T22:33:03.2848736Z     },
2026-07-26T22:33:03.2848826Z     {
2026-07-26T22:33:03.2848937Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-07-26T22:33:03.2855695Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-07-26T22:33:03.2855971Z       "requiredStages": [
2026-07-26T22:33:03.2856071Z         "doc",
2026-07-26T22:33:03.2856152Z         "impl",
2026-07-26T22:33:03.2856237Z         "unit",
2026-07-26T22:33:03.2856325Z         "int"
2026-07-26T22:33:03.2856410Z       ],
2026-07-26T22:33:03.2856486Z       "stages": {
2026-07-26T22:33:03.2856581Z         "doc": {
2026-07-26T22:33:03.2856673Z           "complete": true,
2026-07-26T22:33:03.2856772Z           "evidence": [
2026-07-26T22:33:03.2856867Z             {
2026-07-26T22:33:03.2857011Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-07-26T22:33:03.2857091Z               "line": 134
2026-07-26T22:33:03.2857173Z             },
2026-07-26T22:33:03.2857259Z             {
2026-07-26T22:33:03.2857364Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.2857453Z               "line": 138
2026-07-26T22:33:03.2857538Z             }
2026-07-26T22:33:03.2857610Z           ]
2026-07-26T22:33:03.2857690Z         },
2026-07-26T22:33:03.2857775Z         "impl": {
2026-07-26T22:33:03.2857870Z           "complete": true,
2026-07-26T22:33:03.2857966Z           "evidence": [
2026-07-26T22:33:03.2858051Z             {
2026-07-26T22:33:03.2858175Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.2858271Z               "line": 90
2026-07-26T22:33:03.2858409Z             },
2026-07-26T22:33:03.2858494Z             {
2026-07-26T22:33:03.2858605Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.2858691Z               "line": 231
2026-07-26T22:33:03.2858771Z             },
2026-07-26T22:33:03.2858848Z             {
2026-07-26T22:33:03.2859024Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.2859114Z               "line": 247
2026-07-26T22:33:03.2859192Z             },
2026-07-26T22:33:03.2859272Z             {
2026-07-26T22:33:03.2859391Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:03.2859487Z               "line": 71
2026-07-26T22:33:03.2859564Z             },
2026-07-26T22:33:03.2859648Z             {
2026-07-26T22:33:03.2859768Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2859860Z               "line": 250
2026-07-26T22:33:03.2859944Z             }
2026-07-26T22:33:03.2860026Z           ]
2026-07-26T22:33:03.2860098Z         },
2026-07-26T22:33:03.2860179Z         "int": {
2026-07-26T22:33:03.2860269Z           "complete": true,
2026-07-26T22:33:03.2860439Z           "evidence": [
2026-07-26T22:33:03.2860520Z             {
2026-07-26T22:33:03.2860646Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-07-26T22:33:03.2860741Z               "line": 25
2026-07-26T22:33:03.2860823Z             }
2026-07-26T22:33:03.2860957Z           ]
2026-07-26T22:33:03.2861042Z         },
2026-07-26T22:33:03.2861124Z         "unit": {
2026-07-26T22:33:03.2861219Z           "complete": true,
2026-07-26T22:33:03.2861304Z           "evidence": [
2026-07-26T22:33:03.2861390Z             {
2026-07-26T22:33:03.2861510Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.2861591Z               "line": 633
2026-07-26T22:33:03.2861681Z             },
2026-07-26T22:33:03.2861758Z             {
2026-07-26T22:33:03.2861891Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.2862034Z               "line": 683
2026-07-26T22:33:03.2862126Z             },
2026-07-26T22:33:03.2862210Z             {
2026-07-26T22:33:03.2862335Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.2862421Z               "line": 1636
2026-07-26T22:33:03.2862511Z             },
2026-07-26T22:33:03.2862592Z             {
2026-07-26T22:33:03.2862703Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:03.2862793Z               "line": 249
2026-07-26T22:33:03.2862891Z             },
2026-07-26T22:33:03.2862972Z             {
2026-07-26T22:33:03.2863092Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:03.2863166Z               "line": 275
2026-07-26T22:33:03.2863261Z             },
2026-07-26T22:33:03.2863342Z             {
2026-07-26T22:33:03.2863467Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:03.2863556Z               "line": 303
2026-07-26T22:33:03.2863642Z             },
2026-07-26T22:33:03.2863724Z             {
2026-07-26T22:33:03.2863838Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.2863923Z               "line": 2140
2026-07-26T22:33:03.2864020Z             }
2026-07-26T22:33:03.2864100Z           ]
2026-07-26T22:33:03.2864185Z         }
2026-07-26T22:33:03.2864262Z       }
2026-07-26T22:33:03.2864349Z     },
2026-07-26T22:33:03.2864429Z     {
2026-07-26T22:33:03.2864558Z       "id": "REQ-SESSIONS-LOG-ENDPOINT-ATTRIBUTION",
2026-07-26T22:33:03.2867136Z       "title": "C2 (F028, infra; ROOT-CAUSED + severity-upgraded doyle RCA 2026-07-03): cross-endpoint perch contamination — a foreign psyche's SessionStart hook REBINDS a victim perch's IDENTITY, not merely its ledger. Evidence: hall-a's info.json.session_id IS f015b-probe-psyche's session (359d7bd7) + hall-a's ledger holds the foreign psyche session; same class as hall-b's dead-pid stamp (141556). This REQ = the OBSERVABLE (foreign session_id in a perch's ledger/info.json + resume offering foreign sessions) and its belt-braces: (iii) filter owlery-cwd rows OUT of resume_rows; (iv) one-time repair for already-contaminated perches (hall-a on HFENDULEAM) or self-heal on next legitimate session-start. The ROOT (identity pinned at spawn + honest bind + nested self-resolve) is REQ-BIND-HONEST-SELF-STAMP — C2 is UPSTREAM of B3 (presence/CONTROLLED read the very stamps this corrupts). See triage C2.",
2026-07-26T22:33:03.2867294Z       "requiredStages": [
2026-07-26T22:33:03.2867384Z         "impl",
2026-07-26T22:33:03.2867466Z         "unit"
2026-07-26T22:33:03.2867557Z       ],
2026-07-26T22:33:03.2867646Z       "stages": {
2026-07-26T22:33:03.2867737Z         "doc": {
2026-07-26T22:33:03.2867834Z           "complete": false,
2026-07-26T22:33:03.2867929Z           "evidence": []
2026-07-26T22:33:03.2868009Z         },
2026-07-26T22:33:03.2868098Z         "impl": {
2026-07-26T22:33:03.2868189Z           "complete": true,
2026-07-26T22:33:03.2868292Z           "evidence": [
2026-07-26T22:33:03.2868411Z             {
2026-07-26T22:33:03.2868564Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.2868706Z               "line": 522
2026-07-26T22:33:03.2868884Z             }
2026-07-26T22:33:03.2869093Z           ]
2026-07-26T22:33:03.2869208Z         },
2026-07-26T22:33:03.2869331Z         "int": {
2026-07-26T22:33:03.2869475Z           "complete": false,
2026-07-26T22:33:03.2869664Z           "evidence": []
2026-07-26T22:33:03.2869884Z         },
2026-07-26T22:33:03.2870013Z         "unit": {
2026-07-26T22:33:03.2870109Z           "complete": true,
2026-07-26T22:33:03.2870199Z           "evidence": [
2026-07-26T22:33:03.2870280Z             {
2026-07-26T22:33:03.2870410Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.2870495Z               "line": 1054
2026-07-26T22:33:03.2870586Z             }
2026-07-26T22:33:03.2870658Z           ]
2026-07-26T22:33:03.2870744Z         }
2026-07-26T22:33:03.2870819Z       }
2026-07-26T22:33:03.2870904Z     },
2026-07-26T22:33:03.2871047Z     {
2026-07-26T22:33:03.2871155Z       "id": "REQ-SHELL-1",
2026-07-26T22:33:03.2872013Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-07-26T22:33:03.2872113Z       "requiredStages": [
2026-07-26T22:33:03.2872193Z         "impl",
2026-07-26T22:33:03.2872284Z         "unit",
2026-07-26T22:33:03.2872357Z         "int"
2026-07-26T22:33:03.2872441Z       ],
2026-07-26T22:33:03.2872518Z       "stages": {
2026-07-26T22:33:03.2872609Z         "doc": {
2026-07-26T22:33:03.2872700Z           "complete": false,
2026-07-26T22:33:03.2872789Z           "evidence": []
2026-07-26T22:33:03.2872876Z         },
2026-07-26T22:33:03.2872953Z         "impl": {
2026-07-26T22:33:03.2873048Z           "complete": true,
2026-07-26T22:33:03.2873148Z           "evidence": [
2026-07-26T22:33:03.2873229Z             {
2026-07-26T22:33:03.2873354Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.2873442Z               "line": 190
2026-07-26T22:33:03.2873523Z             },
2026-07-26T22:33:03.2873609Z             {
2026-07-26T22:33:03.2873731Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.2873835Z               "line": 269
2026-07-26T22:33:03.2873916Z             },
2026-07-26T22:33:03.2874003Z             {
2026-07-26T22:33:03.2874126Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-07-26T22:33:03.2874217Z               "line": 27
2026-07-26T22:33:03.2874298Z             },
2026-07-26T22:33:03.2874384Z             {
2026-07-26T22:33:03.2874507Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-07-26T22:33:03.2874604Z               "line": 53
2026-07-26T22:33:03.2874685Z             },
2026-07-26T22:33:03.2874769Z             {
2026-07-26T22:33:03.2874890Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-07-26T22:33:03.2875161Z               "line": 163
2026-07-26T22:33:03.2875248Z             },
2026-07-26T22:33:03.2875343Z             {
2026-07-26T22:33:03.2875461Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-07-26T22:33:03.2875558Z               "line": 242
2026-07-26T22:33:03.2875642Z             },
2026-07-26T22:33:03.2875733Z             {
2026-07-26T22:33:03.2875849Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2875943Z               "line": 22
2026-07-26T22:33:03.2876024Z             },
2026-07-26T22:33:03.2876116Z             {
2026-07-26T22:33:03.2876221Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2876304Z               "line": 74
2026-07-26T22:33:03.2876390Z             },
2026-07-26T22:33:03.2876476Z             {
2026-07-26T22:33:03.2876591Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2876676Z               "line": 85
2026-07-26T22:33:03.2876752Z             },
2026-07-26T22:33:03.2876830Z             {
2026-07-26T22:33:03.2876943Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2877096Z               "line": 205
2026-07-26T22:33:03.2877177Z             },
2026-07-26T22:33:03.2877263Z             {
2026-07-26T22:33:03.2877382Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2877511Z               "line": 264
2026-07-26T22:33:03.2877587Z             },
2026-07-26T22:33:03.2877682Z             {
2026-07-26T22:33:03.2877798Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2877892Z               "line": 315
2026-07-26T22:33:03.2877978Z             },
2026-07-26T22:33:03.2878060Z             {
2026-07-26T22:33:03.2878183Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2878278Z               "line": 337
2026-07-26T22:33:03.2878365Z             },
2026-07-26T22:33:03.2878497Z             {
2026-07-26T22:33:03.2878616Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2878701Z               "line": 350
2026-07-26T22:33:03.2878787Z             },
2026-07-26T22:33:03.2878866Z             {
2026-07-26T22:33:03.2879058Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.2879144Z               "line": 231
2026-07-26T22:33:03.2879229Z             },
2026-07-26T22:33:03.2879310Z             {
2026-07-26T22:33:03.2879415Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.2879500Z               "line": 247
2026-07-26T22:33:03.2879576Z             },
2026-07-26T22:33:03.2879683Z             {
2026-07-26T22:33:03.2879839Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:03.2879954Z               "line": 41
2026-07-26T22:33:03.2880063Z             },
2026-07-26T22:33:03.2880173Z             {
2026-07-26T22:33:03.2880336Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:03.2880459Z               "line": 287
2026-07-26T22:33:03.2880588Z             },
2026-07-26T22:33:03.2880712Z             {
2026-07-26T22:33:03.2880898Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.2881022Z               "line": 232
2026-07-26T22:33:03.2881121Z             },
2026-07-26T22:33:03.2881203Z             {
2026-07-26T22:33:03.2881323Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:03.2881417Z               "line": 426
2026-07-26T22:33:03.2881497Z             },
2026-07-26T22:33:03.2881578Z             {
2026-07-26T22:33:03.2881682Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:03.2881772Z               "line": 501
2026-07-26T22:33:03.2881852Z             },
2026-07-26T22:33:03.2881939Z             {
2026-07-26T22:33:03.2882063Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.2882152Z               "line": 437
2026-07-26T22:33:03.2882240Z             },
2026-07-26T22:33:03.2882335Z             {
2026-07-26T22:33:03.2882525Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2882626Z               "line": 12102
2026-07-26T22:33:03.2882702Z             },
2026-07-26T22:33:03.2882796Z             {
2026-07-26T22:33:03.2882897Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2882997Z               "line": 12271
2026-07-26T22:33:03.2883083Z             },
2026-07-26T22:33:03.2883169Z             {
2026-07-26T22:33:03.2883265Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2883354Z               "line": 12458
2026-07-26T22:33:03.2883436Z             }
2026-07-26T22:33:03.2883523Z           ]
2026-07-26T22:33:03.2883603Z         },
2026-07-26T22:33:03.2883698Z         "int": {
2026-07-26T22:33:03.2883780Z           "complete": true,
2026-07-26T22:33:03.2883880Z           "evidence": [
2026-07-26T22:33:03.2883965Z             {
2026-07-26T22:33:03.2884088Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-07-26T22:33:03.2884178Z               "line": 868
2026-07-26T22:33:03.2884277Z             },
2026-07-26T22:33:03.2884362Z             {
2026-07-26T22:33:03.2884496Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-07-26T22:33:03.2884639Z               "line": 8
2026-07-26T22:33:03.2884758Z             },
2026-07-26T22:33:03.2884830Z             {
2026-07-26T22:33:03.2884963Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-07-26T22:33:03.2885102Z               "line": 49
2026-07-26T22:33:03.2885192Z             },
2026-07-26T22:33:03.2885273Z             {
2026-07-26T22:33:03.2885397Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.2885488Z               "line": 835
2026-07-26T22:33:03.2885568Z             },
2026-07-26T22:33:03.2885654Z             {
2026-07-26T22:33:03.2885775Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.2885869Z               "line": 1368
2026-07-26T22:33:03.2885950Z             },
2026-07-26T22:33:03.2886075Z             {
2026-07-26T22:33:03.2886197Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-07-26T22:33:03.2886283Z               "line": 17
2026-07-26T22:33:03.2886380Z             },
2026-07-26T22:33:03.2886452Z             {
2026-07-26T22:33:03.2886560Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-07-26T22:33:03.2886647Z               "line": 14
2026-07-26T22:33:03.2886728Z             }
2026-07-26T22:33:03.2886813Z           ]
2026-07-26T22:33:03.2886893Z         },
2026-07-26T22:33:03.2886983Z         "unit": {
2026-07-26T22:33:03.2887075Z           "complete": true,
2026-07-26T22:33:03.2887170Z           "evidence": [
2026-07-26T22:33:03.2887255Z             {
2026-07-26T22:33:03.2887375Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-07-26T22:33:03.2887466Z               "line": 325
2026-07-26T22:33:03.2887555Z             },
2026-07-26T22:33:03.2887637Z             {
2026-07-26T22:33:03.2887766Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-07-26T22:33:03.2887860Z               "line": 358
2026-07-26T22:33:03.2887947Z             },
2026-07-26T22:33:03.2888034Z             {
2026-07-26T22:33:03.2888157Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-07-26T22:33:03.2888252Z               "line": 458
2026-07-26T22:33:03.2888344Z             },
2026-07-26T22:33:03.2888423Z             {
2026-07-26T22:33:03.2888548Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2888630Z               "line": 672
2026-07-26T22:33:03.2888710Z             },
2026-07-26T22:33:03.2888790Z             {
2026-07-26T22:33:03.2888910Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2889091Z               "line": 801
2026-07-26T22:33:03.2889180Z             },
2026-07-26T22:33:03.2889261Z             {
2026-07-26T22:33:03.2889384Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2889474Z               "line": 945
2026-07-26T22:33:03.2889560Z             },
2026-07-26T22:33:03.2889718Z             {
2026-07-26T22:33:03.2889831Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.2889918Z               "line": 728
2026-07-26T22:33:03.2890004Z             },
2026-07-26T22:33:03.2890084Z             {
2026-07-26T22:33:03.2890209Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-07-26T22:33:03.2890300Z               "line": 548
2026-07-26T22:33:03.2890394Z             },
2026-07-26T22:33:03.2890475Z             {
2026-07-26T22:33:03.2890577Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2890667Z               "line": 16676
2026-07-26T22:33:03.2890756Z             },
2026-07-26T22:33:03.2890833Z             {
2026-07-26T22:33:03.2890943Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2891024Z               "line": 17118
2026-07-26T22:33:03.2891114Z             },
2026-07-26T22:33:03.2891202Z             {
2026-07-26T22:33:03.2891300Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2891405Z               "line": 17535
2026-07-26T22:33:03.2891482Z             }
2026-07-26T22:33:03.2891573Z           ]
2026-07-26T22:33:03.2891725Z         }
2026-07-26T22:33:03.2891807Z       }
2026-07-26T22:33:03.2891883Z     },
2026-07-26T22:33:03.2891977Z     {
2026-07-26T22:33:03.2892062Z       "id": "REQ-SHELL-2",
2026-07-26T22:33:03.2893533Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-07-26T22:33:03.2893695Z       "requiredStages": [
2026-07-26T22:33:03.2893787Z         "impl",
2026-07-26T22:33:03.2893867Z         "unit",
2026-07-26T22:33:03.2894015Z         "int"
2026-07-26T22:33:03.2894106Z       ],
2026-07-26T22:33:03.2894196Z       "stages": {
2026-07-26T22:33:03.2894273Z         "doc": {
2026-07-26T22:33:03.2894374Z           "complete": false,
2026-07-26T22:33:03.2894464Z           "evidence": []
2026-07-26T22:33:03.2894553Z         },
2026-07-26T22:33:03.2894629Z         "impl": {
2026-07-26T22:33:03.2894725Z           "complete": true,
2026-07-26T22:33:03.2894819Z           "evidence": [
2026-07-26T22:33:03.2894903Z             {
2026-07-26T22:33:03.2895023Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:03.2895109Z               "line": 233
2026-07-26T22:33:03.2895194Z             },
2026-07-26T22:33:03.2895270Z             {
2026-07-26T22:33:03.2895390Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.2895481Z               "line": 1068
2026-07-26T22:33:03.2895556Z             },
2026-07-26T22:33:03.2895647Z             {
2026-07-26T22:33:03.2895771Z               "path": "crates/spt-daemon/src/grants.rs",
2026-07-26T22:33:03.2895862Z               "line": 250
2026-07-26T22:33:03.2895943Z             },
2026-07-26T22:33:03.2896029Z             {
2026-07-26T22:33:03.2896153Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.2896233Z               "line": 814
2026-07-26T22:33:03.2896311Z             },
2026-07-26T22:33:03.2896396Z             {
2026-07-26T22:33:03.2896515Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.2896606Z               "line": 30
2026-07-26T22:33:03.2896697Z             },
2026-07-26T22:33:03.2896776Z             {
2026-07-26T22:33:03.2896892Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.2896974Z               "line": 449
2026-07-26T22:33:03.2897054Z             },
2026-07-26T22:33:03.2897140Z             {
2026-07-26T22:33:03.2897265Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.2897346Z               "line": 493
2026-07-26T22:33:03.2897434Z             },
2026-07-26T22:33:03.2897563Z             {
2026-07-26T22:33:03.2897693Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.2897777Z               "line": 705
2026-07-26T22:33:03.2897863Z             },
2026-07-26T22:33:03.2897940Z             {
2026-07-26T22:33:03.2898064Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.2898154Z               "line": 454
2026-07-26T22:33:03.2898246Z             },
2026-07-26T22:33:03.2898340Z             {
2026-07-26T22:33:03.2898459Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-07-26T22:33:03.2898550Z               "line": 116
2026-07-26T22:33:03.2898641Z             },
2026-07-26T22:33:03.2898722Z             {
2026-07-26T22:33:03.2898841Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2898928Z               "line": 129
2026-07-26T22:33:03.2899088Z             },
2026-07-26T22:33:03.2899166Z             {
2026-07-26T22:33:03.2899275Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2899360Z               "line": 430
2026-07-26T22:33:03.2899451Z             },
2026-07-26T22:33:03.2899590Z             {
2026-07-26T22:33:03.2899717Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2899813Z               "line": 569
2026-07-26T22:33:03.2899898Z             },
2026-07-26T22:33:03.2899977Z             {
2026-07-26T22:33:03.2900139Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.2900235Z               "line": 24
2026-07-26T22:33:03.2900320Z             },
2026-07-26T22:33:03.2900405Z             {
2026-07-26T22:33:03.2900512Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.2900607Z               "line": 76
2026-07-26T22:33:03.2900697Z             },
2026-07-26T22:33:03.2900774Z             {
2026-07-26T22:33:03.2900888Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.2900983Z               "line": 154
2026-07-26T22:33:03.2901118Z             },
2026-07-26T22:33:03.2901198Z             {
2026-07-26T22:33:03.2901316Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.2905313Z               "line": 177
2026-07-26T22:33:03.2905421Z             },
2026-07-26T22:33:03.2905510Z             {
2026-07-26T22:33:03.2905650Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.2905759Z               "line": 273
2026-07-26T22:33:03.2905839Z             },
2026-07-26T22:33:03.2905926Z             {
2026-07-26T22:33:03.2906051Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.2906149Z               "line": 470
2026-07-26T22:33:03.2906227Z             },
2026-07-26T22:33:03.2906317Z             {
2026-07-26T22:33:03.2906441Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.2906532Z               "line": 561
2026-07-26T22:33:03.2906613Z             },
2026-07-26T22:33:03.2906698Z             {
2026-07-26T22:33:03.2906832Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-07-26T22:33:03.2906914Z               "line": 27
2026-07-26T22:33:03.2907003Z             },
2026-07-26T22:33:03.2907098Z             {
2026-07-26T22:33:03.2907214Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-07-26T22:33:03.2907314Z               "line": 48
2026-07-26T22:33:03.2907395Z             },
2026-07-26T22:33:03.2907501Z             {
2026-07-26T22:33:03.2907619Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.2907719Z               "line": 635
2026-07-26T22:33:03.2907796Z             },
2026-07-26T22:33:03.2907887Z             {
2026-07-26T22:33:03.2907999Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2908075Z               "line": 4153
2026-07-26T22:33:03.2908152Z             },
2026-07-26T22:33:03.2908224Z             {
2026-07-26T22:33:03.2908333Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2908414Z               "line": 12116
2026-07-26T22:33:03.2908591Z             },
2026-07-26T22:33:03.2908671Z             {
2026-07-26T22:33:03.2908772Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2908863Z               "line": 12196
2026-07-26T22:33:03.2909014Z             },
2026-07-26T22:33:03.2909096Z             {
2026-07-26T22:33:03.2909196Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2909273Z               "line": 12224
2026-07-26T22:33:03.2909372Z             },
2026-07-26T22:33:03.2909454Z             {
2026-07-26T22:33:03.2909558Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2909644Z               "line": 12278
2026-07-26T22:33:03.2909726Z             },
2026-07-26T22:33:03.2909807Z             {
2026-07-26T22:33:03.2909910Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2909997Z               "line": 12544
2026-07-26T22:33:03.2910079Z             },
2026-07-26T22:33:03.2910164Z             {
2026-07-26T22:33:03.2910268Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2910358Z               "line": 12604
2026-07-26T22:33:03.2910449Z             },
2026-07-26T22:33:03.2910523Z             {
2026-07-26T22:33:03.2910709Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.2910795Z               "line": 515
2026-07-26T22:33:03.2910880Z             },
2026-07-26T22:33:03.2910952Z             {
2026-07-26T22:33:03.2911052Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.2911190Z               "line": 557
2026-07-26T22:33:03.2911276Z             }
2026-07-26T22:33:03.2911358Z           ]
2026-07-26T22:33:03.2911453Z         },
2026-07-26T22:33:03.2911533Z         "int": {
2026-07-26T22:33:03.2911634Z           "complete": true,
2026-07-26T22:33:03.2911725Z           "evidence": [
2026-07-26T22:33:03.2911811Z             {
2026-07-26T22:33:03.2912002Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-07-26T22:33:03.2912110Z               "line": 861
2026-07-26T22:33:03.2912196Z             },
2026-07-26T22:33:03.2912365Z             {
2026-07-26T22:33:03.2912540Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.2912679Z               "line": 835
2026-07-26T22:33:03.2912778Z             },
2026-07-26T22:33:03.2912859Z             {
2026-07-26T22:33:03.2912985Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.2913078Z               "line": 1368
2026-07-26T22:33:03.2913164Z             },
2026-07-26T22:33:03.2913245Z             {
2026-07-26T22:33:03.2913377Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-07-26T22:33:03.2913457Z               "line": 18
2026-07-26T22:33:03.2913537Z             }
2026-07-26T22:33:03.2913619Z           ]
2026-07-26T22:33:03.2913705Z         },
2026-07-26T22:33:03.2913781Z         "unit": {
2026-07-26T22:33:03.2913881Z           "complete": true,
2026-07-26T22:33:03.2913963Z           "evidence": [
2026-07-26T22:33:03.2914044Z             {
2026-07-26T22:33:03.2914162Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.2914259Z               "line": 791
2026-07-26T22:33:03.2914339Z             },
2026-07-26T22:33:03.2914429Z             {
2026-07-26T22:33:03.2914554Z               "path": "crates/spt-daemon/src/resting.rs",
2026-07-26T22:33:03.2914653Z               "line": 1257
2026-07-26T22:33:03.2914730Z             },
2026-07-26T22:33:03.2914820Z             {
2026-07-26T22:33:03.2914945Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2915039Z               "line": 834
2026-07-26T22:33:03.2915111Z             },
2026-07-26T22:33:03.2915203Z             {
2026-07-26T22:33:03.2915321Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2915412Z               "line": 883
2026-07-26T22:33:03.2915494Z             },
2026-07-26T22:33:03.2915579Z             {
2026-07-26T22:33:03.2915702Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2915797Z               "line": 907
2026-07-26T22:33:03.2915948Z             },
2026-07-26T22:33:03.2916033Z             {
2026-07-26T22:33:03.2916152Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.2916234Z               "line": 640
2026-07-26T22:33:03.2916310Z             },
2026-07-26T22:33:03.2916395Z             {
2026-07-26T22:33:03.2916510Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.2916606Z               "line": 661
2026-07-26T22:33:03.2916686Z             },
2026-07-26T22:33:03.2916772Z             {
2026-07-26T22:33:03.2916882Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.2916968Z               "line": 697
2026-07-26T22:33:03.2917048Z             },
2026-07-26T22:33:03.2917131Z             {
2026-07-26T22:33:03.2917249Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.2917339Z               "line": 751
2026-07-26T22:33:03.2917416Z             },
2026-07-26T22:33:03.2917488Z             {
2026-07-26T22:33:03.2917612Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.2917702Z               "line": 769
2026-07-26T22:33:03.2917836Z             },
2026-07-26T22:33:03.2917921Z             {
2026-07-26T22:33:03.2918041Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.2918132Z               "line": 808
2026-07-26T22:33:03.2918221Z             },
2026-07-26T22:33:03.2918337Z             {
2026-07-26T22:33:03.2918452Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-07-26T22:33:03.2918536Z               "line": 959
2026-07-26T22:33:03.2918621Z             },
2026-07-26T22:33:03.2918702Z             {
2026-07-26T22:33:03.2918827Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-07-26T22:33:03.2918912Z               "line": 85
2026-07-26T22:33:03.2919080Z             },
2026-07-26T22:33:03.2919156Z             {
2026-07-26T22:33:03.2919264Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2919428Z               "line": 15584
2026-07-26T22:33:03.2919518Z             },
2026-07-26T22:33:03.2919593Z             {
2026-07-26T22:33:03.2919699Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2919789Z               "line": 16754
2026-07-26T22:33:03.2919866Z             },
2026-07-26T22:33:03.2919951Z             {
2026-07-26T22:33:03.2920052Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2920142Z               "line": 16853
2026-07-26T22:33:03.2920223Z             },
2026-07-26T22:33:03.2920301Z             {
2026-07-26T22:33:03.2920401Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2920480Z               "line": 16976
2026-07-26T22:33:03.2920567Z             }
2026-07-26T22:33:03.2920649Z           ]
2026-07-26T22:33:03.2920730Z         }
2026-07-26T22:33:03.2920804Z       }
2026-07-26T22:33:03.2920894Z     },
2026-07-26T22:33:03.2920975Z     {
2026-07-26T22:33:03.2921061Z       "id": "REQ-SHELL-3",
2026-07-26T22:33:03.2922877Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-07-26T22:33:03.2922985Z       "requiredStages": [
2026-07-26T22:33:03.2923076Z         "impl",
2026-07-26T22:33:03.2923153Z         "unit",
2026-07-26T22:33:03.2923244Z         "int"
2026-07-26T22:33:03.2923328Z       ],
2026-07-26T22:33:03.2923424Z       "stages": {
2026-07-26T22:33:03.2923502Z         "doc": {
2026-07-26T22:33:03.2923601Z           "complete": false,
2026-07-26T22:33:03.2923685Z           "evidence": []
2026-07-26T22:33:03.2923838Z         },
2026-07-26T22:33:03.2923928Z         "impl": {
2026-07-26T22:33:03.2924026Z           "complete": true,
2026-07-26T22:33:03.2924122Z           "evidence": [
2026-07-26T22:33:03.2924213Z             {
2026-07-26T22:33:03.2924336Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.2924436Z               "line": 274
2026-07-26T22:33:03.2924537Z             },
2026-07-26T22:33:03.2924627Z             {
2026-07-26T22:33:03.2924751Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:03.2924847Z               "line": 36
2026-07-26T22:33:03.2924928Z             },
2026-07-26T22:33:03.2925013Z             {
2026-07-26T22:33:03.2925124Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:03.2925218Z               "line": 163
2026-07-26T22:33:03.2925294Z             },
2026-07-26T22:33:03.2925371Z             {
2026-07-26T22:33:03.2925477Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:03.2925562Z               "line": 172
2026-07-26T22:33:03.2925647Z             },
2026-07-26T22:33:03.2925729Z             {
2026-07-26T22:33:03.2925900Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:03.2925982Z               "line": 199
2026-07-26T22:33:03.2926059Z             },
2026-07-26T22:33:03.2926144Z             {
2026-07-26T22:33:03.2926257Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:03.2926385Z               "line": 332
2026-07-26T22:33:03.2926466Z             },
2026-07-26T22:33:03.2926545Z             {
2026-07-26T22:33:03.2926664Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:03.2926751Z               "line": 384
2026-07-26T22:33:03.2926837Z             },
2026-07-26T22:33:03.2926922Z             {
2026-07-26T22:33:03.2927042Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:03.2927128Z               "line": 411
2026-07-26T22:33:03.2927203Z             },
2026-07-26T22:33:03.2927327Z             {
2026-07-26T22:33:03.2927442Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-07-26T22:33:03.2927523Z               "line": 51
2026-07-26T22:33:03.2927618Z             },
2026-07-26T22:33:03.2927691Z             {
2026-07-26T22:33:03.2927814Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.2927895Z               "line": 334
2026-07-26T22:33:03.2927981Z             },
2026-07-26T22:33:03.2928057Z             {
2026-07-26T22:33:03.2928181Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.2928272Z               "line": 377
2026-07-26T22:33:03.2928358Z             },
2026-07-26T22:33:03.2928438Z             {
2026-07-26T22:33:03.2928557Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.2928645Z               "line": 647
2026-07-26T22:33:03.2928725Z             },
2026-07-26T22:33:03.2928800Z             {
2026-07-26T22:33:03.2928931Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-07-26T22:33:03.2929100Z               "line": 133
2026-07-26T22:33:03.2929171Z             },
2026-07-26T22:33:03.2929257Z             {
2026-07-26T22:33:03.2929383Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2929467Z               "line": 517
2026-07-26T22:33:03.2929553Z             },
2026-07-26T22:33:03.2929635Z             {
2026-07-26T22:33:03.2929758Z               "path": "crates/spt-proto/src/event.rs",
2026-07-26T22:33:03.2929853Z               "line": 74
2026-07-26T22:33:03.2929935Z             },
2026-07-26T22:33:03.2930021Z             {
2026-07-26T22:33:03.2930139Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.2930231Z               "line": 765
2026-07-26T22:33:03.2930317Z             },
2026-07-26T22:33:03.2930402Z             {
2026-07-26T22:33:03.2930516Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.2930612Z               "line": 500
2026-07-26T22:33:03.2930688Z             },
2026-07-26T22:33:03.2930841Z             {
2026-07-26T22:33:03.2930941Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2931040Z               "line": 12330
2026-07-26T22:33:03.2931117Z             }
2026-07-26T22:33:03.2931204Z           ]
2026-07-26T22:33:03.2931285Z         },
2026-07-26T22:33:03.2931402Z         "int": {
2026-07-26T22:33:03.2931498Z           "complete": true,
2026-07-26T22:33:03.2931593Z           "evidence": [
2026-07-26T22:33:03.2931663Z             {
2026-07-26T22:33:03.2931820Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.2931911Z               "line": 1417
2026-07-26T22:33:03.2932029Z             },
2026-07-26T22:33:03.2932158Z             {
2026-07-26T22:33:03.2932325Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-07-26T22:33:03.2932459Z               "line": 17
2026-07-26T22:33:03.2932550Z             }
2026-07-26T22:33:03.2932630Z           ]
2026-07-26T22:33:03.2932725Z         },
2026-07-26T22:33:03.2932817Z         "unit": {
2026-07-26T22:33:03.2932916Z           "complete": true,
2026-07-26T22:33:03.2932997Z           "evidence": [
2026-07-26T22:33:03.2933155Z             {
2026-07-26T22:33:03.2933279Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:03.2933379Z               "line": 429
2026-07-26T22:33:03.2933466Z             },
2026-07-26T22:33:03.2933555Z             {
2026-07-26T22:33:03.2933728Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:03.2933819Z               "line": 443
2026-07-26T22:33:03.2933907Z             },
2026-07-26T22:33:03.2933999Z             {
2026-07-26T22:33:03.2934119Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:03.2934222Z               "line": 461
2026-07-26T22:33:03.2934307Z             },
2026-07-26T22:33:03.2934389Z             {
2026-07-26T22:33:03.2934507Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:03.2934586Z               "line": 482
2026-07-26T22:33:03.2934725Z             },
2026-07-26T22:33:03.2934811Z             {
2026-07-26T22:33:03.2934929Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-07-26T22:33:03.2935021Z               "line": 621
2026-07-26T22:33:03.2935102Z             },
2026-07-26T22:33:03.2935183Z             {
2026-07-26T22:33:03.2935301Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.2935398Z               "line": 1056
2026-07-26T22:33:03.2935479Z             },
2026-07-26T22:33:03.2935559Z             {
2026-07-26T22:33:03.2935674Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.2935760Z               "line": 1129
2026-07-26T22:33:03.2935836Z             },
2026-07-26T22:33:03.2935922Z             {
2026-07-26T22:33:03.2936051Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-07-26T22:33:03.2936140Z               "line": 477
2026-07-26T22:33:03.2936217Z             },
2026-07-26T22:33:03.2936299Z             {
2026-07-26T22:33:03.2936417Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:03.2936498Z               "line": 906
2026-07-26T22:33:03.2936590Z             },
2026-07-26T22:33:03.2936667Z             {
2026-07-26T22:33:03.2936770Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2936860Z               "line": 16536
2026-07-26T22:33:03.2936945Z             }
2026-07-26T22:33:03.2937026Z           ]
2026-07-26T22:33:03.2937101Z         }
2026-07-26T22:33:03.2937186Z       }
2026-07-26T22:33:03.2937277Z     },
2026-07-26T22:33:03.2937359Z     {
2026-07-26T22:33:03.2937458Z       "id": "REQ-SHELL-4",
2026-07-26T22:33:03.2939294Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-07-26T22:33:03.2939462Z       "requiredStages": [
2026-07-26T22:33:03.2939544Z         "doc",
2026-07-26T22:33:03.2939623Z         "impl",
2026-07-26T22:33:03.2939708Z         "unit",
2026-07-26T22:33:03.2939789Z         "int"
2026-07-26T22:33:03.2939875Z       ],
2026-07-26T22:33:03.2939961Z       "stages": {
2026-07-26T22:33:03.2940042Z         "doc": {
2026-07-26T22:33:03.2940123Z           "complete": true,
2026-07-26T22:33:03.2940214Z           "evidence": [
2026-07-26T22:33:03.2940295Z             {
2026-07-26T22:33:03.2940399Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.2940482Z               "line": 334
2026-07-26T22:33:03.2940567Z             },
2026-07-26T22:33:03.2940638Z             {
2026-07-26T22:33:03.2940872Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-07-26T22:33:03.2940962Z               "line": 88
2026-07-26T22:33:03.2941052Z             }
2026-07-26T22:33:03.2941201Z           ]
2026-07-26T22:33:03.2941301Z         },
2026-07-26T22:33:03.2941411Z         "impl": {
2026-07-26T22:33:03.2941558Z           "complete": true,
2026-07-26T22:33:03.2941672Z           "evidence": [
2026-07-26T22:33:03.2941901Z             {
2026-07-26T22:33:03.2942119Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.2942265Z               "line": 288
2026-07-26T22:33:03.2942346Z             },
2026-07-26T22:33:03.2942432Z             {
2026-07-26T22:33:03.2942556Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-07-26T22:33:03.2942651Z               "line": 61
2026-07-26T22:33:03.2942733Z             },
2026-07-26T22:33:03.2942814Z             {
2026-07-26T22:33:03.2942927Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.2943024Z               "line": 219
2026-07-26T22:33:03.2943176Z             },
2026-07-26T22:33:03.2943251Z             {
2026-07-26T22:33:03.2943372Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.2943467Z               "line": 246
2026-07-26T22:33:03.2943552Z             },
2026-07-26T22:33:03.2943638Z             {
2026-07-26T22:33:03.2943763Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2943858Z               "line": 1124
2026-07-26T22:33:03.2943939Z             },
2026-07-26T22:33:03.2944021Z             {
2026-07-26T22:33:03.2944138Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2944224Z               "line": 2020
2026-07-26T22:33:03.2944312Z             },
2026-07-26T22:33:03.2944393Z             {
2026-07-26T22:33:03.2944516Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2944607Z               "line": 2032
2026-07-26T22:33:03.2944694Z             },
2026-07-26T22:33:03.2944778Z             {
2026-07-26T22:33:03.2944896Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2944987Z               "line": 2073
2026-07-26T22:33:03.2945081Z             },
2026-07-26T22:33:03.2945160Z             {
2026-07-26T22:33:03.2945285Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2945366Z               "line": 525
2026-07-26T22:33:03.2945451Z             },
2026-07-26T22:33:03.2945533Z             {
2026-07-26T22:33:03.2945653Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-07-26T22:33:03.2945748Z               "line": 44
2026-07-26T22:33:03.2945838Z             },
2026-07-26T22:33:03.2945920Z             {
2026-07-26T22:33:03.2946039Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-07-26T22:33:03.2946119Z               "line": 208
2026-07-26T22:33:03.2946210Z             },
2026-07-26T22:33:03.2946292Z             {
2026-07-26T22:33:03.2946415Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-07-26T22:33:03.2946501Z               "line": 227
2026-07-26T22:33:03.2946640Z             },
2026-07-26T22:33:03.2946715Z             {
2026-07-26T22:33:03.2946840Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-07-26T22:33:03.2946941Z               "line": 253
2026-07-26T22:33:03.2947020Z             },
2026-07-26T22:33:03.2947106Z             {
2026-07-26T22:33:03.2947227Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-07-26T22:33:03.2947325Z               "line": 272
2026-07-26T22:33:03.2947411Z             },
2026-07-26T22:33:03.2947496Z             {
2026-07-26T22:33:03.2947610Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-07-26T22:33:03.2947709Z               "line": 392
2026-07-26T22:33:03.2947789Z             },
2026-07-26T22:33:03.2947871Z             {
2026-07-26T22:33:03.2947985Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-07-26T22:33:03.2948085Z               "line": 421
2026-07-26T22:33:03.2948167Z             },
2026-07-26T22:33:03.2948267Z             {
2026-07-26T22:33:03.2948390Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-07-26T22:33:03.2948487Z               "line": 439
2026-07-26T22:33:03.2948615Z             },
2026-07-26T22:33:03.2948695Z             {
2026-07-26T22:33:03.2948811Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-07-26T22:33:03.2948910Z               "line": 458
2026-07-26T22:33:03.2949101Z             },
2026-07-26T22:33:03.2949196Z             {
2026-07-26T22:33:03.2949325Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-07-26T22:33:03.2949421Z               "line": 486
2026-07-26T22:33:03.2949502Z             },
2026-07-26T22:33:03.2949582Z             {
2026-07-26T22:33:03.2949692Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.2949794Z               "line": 784
2026-07-26T22:33:03.2949868Z             },
2026-07-26T22:33:03.2949950Z             {
2026-07-26T22:33:03.2950070Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.2950216Z               "line": 993
2026-07-26T22:33:03.2950301Z             },
2026-07-26T22:33:03.2950382Z             {
2026-07-26T22:33:03.2950503Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.2950602Z               "line": 553
2026-07-26T22:33:03.2950683Z             },
2026-07-26T22:33:03.2950779Z             {
2026-07-26T22:33:03.2950883Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.2950983Z               "line": 12386
2026-07-26T22:33:03.2951070Z             }
2026-07-26T22:33:03.2951146Z           ]
2026-07-26T22:33:03.2951231Z         },
2026-07-26T22:33:03.2951313Z         "int": {
2026-07-26T22:33:03.2951413Z           "complete": true,
2026-07-26T22:33:03.2951503Z           "evidence": [
2026-07-26T22:33:03.2951593Z             {
2026-07-26T22:33:03.2951714Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-07-26T22:33:03.2951813Z               "line": 18
2026-07-26T22:33:03.2951894Z             }
2026-07-26T22:33:03.2951976Z           ]
2026-07-26T22:33:03.2952061Z         },
2026-07-26T22:33:03.2952142Z         "unit": {
2026-07-26T22:33:03.2952232Z           "complete": true,
2026-07-26T22:33:03.2952325Z           "evidence": [
2026-07-26T22:33:03.2952400Z             {
2026-07-26T22:33:03.2952522Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2952613Z               "line": 2449
2026-07-26T22:33:03.2952699Z             },
2026-07-26T22:33:03.2952783Z             {
2026-07-26T22:33:03.2952901Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.2952992Z               "line": 2478
2026-07-26T22:33:03.2953074Z             },
2026-07-26T22:33:03.2953159Z             {
2026-07-26T22:33:03.2953279Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-07-26T22:33:03.2953369Z               "line": 504
2026-07-26T22:33:03.2953459Z             },
2026-07-26T22:33:03.2953535Z             {
2026-07-26T22:33:03.2953656Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-07-26T22:33:03.2953807Z               "line": 514
2026-07-26T22:33:03.2953894Z             },
2026-07-26T22:33:03.2953980Z             {
2026-07-26T22:33:03.2954103Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-07-26T22:33:03.2954184Z               "line": 531
2026-07-26T22:33:03.2954266Z             },
2026-07-26T22:33:03.2954347Z             {
2026-07-26T22:33:03.2954475Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-07-26T22:33:03.2954567Z               "line": 543
2026-07-26T22:33:03.2954656Z             },
2026-07-26T22:33:03.2954743Z             {
2026-07-26T22:33:03.2954858Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-07-26T22:33:03.2954939Z               "line": 555
2026-07-26T22:33:03.2955032Z             },
2026-07-26T22:33:03.2955109Z             {
2026-07-26T22:33:03.2955234Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.2955319Z               "line": 1489
2026-07-26T22:33:03.2955404Z             },
2026-07-26T22:33:03.2955494Z             {
2026-07-26T22:33:03.2955599Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:03.2955740Z               "line": 913
2026-07-26T22:33:03.2955821Z             }
2026-07-26T22:33:03.2955908Z           ]
2026-07-26T22:33:03.2955988Z         }
2026-07-26T22:33:03.2956073Z       }
2026-07-26T22:33:03.2956155Z     },
2026-07-26T22:33:03.2956294Z     {
2026-07-26T22:33:03.2956383Z       "id": "REQ-SHELL-5",
2026-07-26T22:33:03.2957614Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-07-26T22:33:03.2957710Z       "requiredStages": [
2026-07-26T22:33:03.2957844Z         "doc",
2026-07-26T22:33:03.2957937Z         "impl",
2026-07-26T22:33:03.2958022Z         "unit",
2026-07-26T22:33:03.2958104Z         "int"
2026-07-26T22:33:03.2958198Z       ],
2026-07-26T22:33:03.2958283Z       "stages": {
2026-07-26T22:33:03.2958369Z         "doc": {
2026-07-26T22:33:03.2958460Z           "complete": true,
2026-07-26T22:33:03.2958555Z           "evidence": [
2026-07-26T22:33:03.2958645Z             {
2026-07-26T22:33:03.2958742Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.2958822Z               "line": 337
2026-07-26T22:33:03.2958912Z             }
2026-07-26T22:33:03.2959066Z           ]
2026-07-26T22:33:03.2959151Z         },
2026-07-26T22:33:03.2959226Z         "impl": {
2026-07-26T22:33:03.2959323Z           "complete": true,
2026-07-26T22:33:03.2959419Z           "evidence": [
2026-07-26T22:33:03.2959513Z             {
2026-07-26T22:33:03.2959657Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.2959761Z               "line": 316
2026-07-26T22:33:03.2959842Z             }
2026-07-26T22:33:03.2959933Z           ]
2026-07-26T22:33:03.2960015Z         },
2026-07-26T22:33:03.2960114Z         "int": {
2026-07-26T22:33:03.2960209Z           "complete": true,
2026-07-26T22:33:03.2960296Z           "evidence": [
2026-07-26T22:33:03.2960377Z             {
2026-07-26T22:33:03.2960500Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.2960587Z               "line": 884
2026-07-26T22:33:03.2960669Z             },
2026-07-26T22:33:03.2960757Z             {
2026-07-26T22:33:03.2960871Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.2960967Z               "line": 1445
2026-07-26T22:33:03.2961049Z             },
2026-07-26T22:33:03.2961138Z             {
2026-07-26T22:33:03.2961286Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-07-26T22:33:03.2961382Z               "line": 23
2026-07-26T22:33:03.2961452Z             }
2026-07-26T22:33:03.2961543Z           ]
2026-07-26T22:33:03.2961692Z         },
2026-07-26T22:33:03.2961781Z         "unit": {
2026-07-26T22:33:03.2961863Z           "complete": true,
2026-07-26T22:33:03.2961950Z           "evidence": [
2026-07-26T22:33:03.2962035Z             {
2026-07-26T22:33:03.2962163Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-07-26T22:33:03.2962241Z               "line": 962
2026-07-26T22:33:03.2962321Z             }
2026-07-26T22:33:03.2962402Z           ]
2026-07-26T22:33:03.2962487Z         }
2026-07-26T22:33:03.2962565Z       }
2026-07-26T22:33:03.2962650Z     },
2026-07-26T22:33:03.2962735Z     {
2026-07-26T22:33:03.2962870Z       "id": "REQ-SHELL-ADAPTER-OWNED-DETACHED-SERVICE",
2026-07-26T22:33:03.2978835Z       "title": "RULING OWED (unratified — do NOT satisfy without one): may a shell adapter own a DETACHED process that deliberately OUTLIVES its shell's link-break? Today the answer is 'no, silently, on Windows only'. `shellhost::kill_shell_pid` force-kills with `taskkill /PID <pid> /T /F` — /T is a TREE kill, so `close_shell` takes the shell's descendants with it; the Unix arm is `kill -9 <pid>`, a SINGLE process. So the same adapter's detached child dies on Windows and survives on Linux, undocumented either way. Two ratified positions collide here and neither may be quietly discarded: (a) CONTEXT §Shell model lifecycle states flatly 'the binary never survives a link-break', and the KNOWN-HAZARDS 'stop lies' RCA (two field cases 2026-07-19, one on doyle's own production endpoint) was paid for precisely because a surviving GRANDCHILD was orphaned where 'even a direct-child kill would have missed it' — that hazard is the standing argument FOR /T; (b) a node-singleton service that must not drop every time a shell relinks is a legitimate shape, and flynn's alchemy ships one today (Hub Daemon, CREATE_NO_WINDOW | CREATE_NEW_PROCESS_GROUP, lockfile-guarded), depending on surviving link-breaks to keep a Discord gateway up. Note CREATE_NEW_PROCESS_GROUP does NOT sever ParentProcessId, so it is not an escape from /T — the survival flynn depends on is unverified, not designed-for. MEASURED, not theorized (flynn, this node, 2026-07-25, current spt-core, no branch): the Hub Daemon's ParentProcessId WAS the shell's pid — a direct child, so `/T` reaches it by either reading — and `spt shell teardown alchemy-0` took the daemon to zero processes within 0.1s, still zero across a 15s poll. Nothing restarted it (no bind happens in that window and the adapter's ensure runs only at bind, so 'died and restarted fast' is excluded by construction); recovery needed an operator spawn + re-bind. BLAST RADIUS, the reason this outranks its filing: that daemon also runs alchemy's Watch engine, so tearing down whichever shell happened to parent it silently stops State-change notification delivery NODE-WIDE, for every registered Watch and every owner — cross-Project blocking waits simply never fire, with no error anywhere. It satisfies the LETTER of alchemy's own REQ-HAZARD-WATCH-SILENT-LOSS (the registry entry survives) while its INTENT fails (the delivery engine is dead) — filed separately adapter-side. Option space for the ruling: (1) adapter-owned detached services are UNSUPPORTED — such a service is an AlwaysOnEndpoint (REQ-EP-8 / ADR-0023: resident, daemon-supervised, addressable, independent of agent liveness), NOT a shell's descendant. NOTE this is not a new design: ADR-0023 was ratified 2026-06-21 and EXPLICITLY rejected 'make it a Shell' ('shells are single-owner, driven, control-exclusive; a multi-party bridge inverts every one of those invariants'), and named a Discord bridge as its first consumer — i.e. flynn's exact shape. The gap is DELIVERY (REQ-EP-8 is inactive pending its milestone), not design. (2) allow it behind an explicit manifest declaration that exempts named descendants from the tree kill AND obliges the adapter to reap them — viable only as an EXPLICIT INTERIM with (1) as the stated target, never a permanent answer, because permanence would re-adopt the shape ADR-0023 already rejected. (3) status quo, but then DOCUMENT the platform asymmetry and stop claiming 'never survives' unqualified. CONSUMER LEAN IS (1), argued against his own convenience (flynn 2026-07-25): the service is a shell's descendant only because a shell was the only thing he had that could start something; (2) buys that accident a manifest field plus a reaping obligation he must then honor forever, and leaves 'the next shell that happens to bind' responsible for the service being up — which IS the defect he measured. Available to a consumer TODAY without any core change and without an exemption: start the service out-of-band so no shell parents it (unsupervised, but never tree-killed) — the trade is 'unsupervised but safe' against 'supervised by accident and killed by design'. Whichever wins, the Windows/Unix divergence is a defect in its own right and closes with it — `/T` on one platform and single-pid `kill -9` on the other means adapters cannot reason about descendant lifetime at all. Filed by flynn 2026-07-25 as 'flagging it now rather than after'; code-read by doyle, then field-confirmed by flynn at the cost of one teardown. FIELD CORRECTION (flynn, 2026-07-25, alchemy v0.3.1): the measured kill was NOT /T over-reach — the 'detached' daemon was still the shell's DIRECT CHILD in the process table (CREATE_NO_WINDOW / CREATE_NEW_PROCESS_GROUP / null stdio detach the console and the signal group, never parentage), so any tree walk found it by construction; isolated A/B on this node confirmed a grandchild whose intermediate has exited survives /T. alchemy v0.3.1 ships the fix as one relay hop (the binary re-invokes itself, the intermediate exits, the daemon's ParentProcessId is dead and nothing can walk it) — production-verified (daemon pid 35472, ParentProcessId 11108 dead) — and WITHDREW the Scheduled Task autostart entirely (alchemy ADR-0012 now Rejected; ADR-0013 records the relay hop). alchemy no longer pushes on this seed. What remains core-side is narrowed, not changed in kind: /T's breadth (it reaches detached descendants of any adapter that has NOT done the relay hop) is a hardening item on its own merits, and the Windows/Unix kill asymmetry stands. Job-object caveat filed separately — the relay hop does NOT escape a Job Object: see REQ-SHELL-CLI-SPAWN-JOB-EXPOSURE.",
2026-07-26T22:33:03.2979451Z       "requiredStages": [],
2026-07-26T22:33:03.2979532Z       "stages": {
2026-07-26T22:33:03.2979619Z         "doc": {
2026-07-26T22:33:03.2979713Z           "complete": false,
2026-07-26T22:33:03.2979813Z           "evidence": []
2026-07-26T22:33:03.2979895Z         },
2026-07-26T22:33:03.2979990Z         "impl": {
2026-07-26T22:33:03.2980080Z           "complete": false,
2026-07-26T22:33:03.2980176Z           "evidence": []
2026-07-26T22:33:03.2980261Z         },
2026-07-26T22:33:03.2980347Z         "int": {
2026-07-26T22:33:03.2980438Z           "complete": false,
2026-07-26T22:33:03.2980539Z           "evidence": []
2026-07-26T22:33:03.2980619Z         },
2026-07-26T22:33:03.2980709Z         "unit": {
2026-07-26T22:33:03.2980796Z           "complete": false,
2026-07-26T22:33:03.2980901Z           "evidence": []
2026-07-26T22:33:03.2980982Z         }
2026-07-26T22:33:03.2981072Z       }
2026-07-26T22:33:03.2981159Z     },
2026-07-26T22:33:03.2981229Z     {
2026-07-26T22:33:03.2981353Z       "id": "REQ-SHELL-CLI-SPAWN-JOB-EXPOSURE",
2026-07-26T22:33:03.2993161Z       "title": "HARDENING SEED (inactive — no defect claimed): a CLI-side `spt shell spawn` rises inside the launching terminal's Job Object when that job denies breakaway. Launch-path census (2026-07-25): `spt shell spawn` calls `shellhost::launch_shell` IN the CLI process, so the shell binary is spawned by a terminal-resident process and is subject to whatever job the terminal wrapped the CLI in; daemon-side (re)launches (`shellwake` relaunch-on-wake, linkhost relink) spawn from the daemon, which is job-neutral once its own cold-start ladder (WMI → schtasks → breakaway → in-job; REQ-HAZARD-VIEWER-CLOSE-DETACH) escaped. The shared spawn primitive (`daemon::detached_no_inherit`) requests CREATE_BREAKAWAY_FROM_JOB best-effort: a job without JOB_OBJECT_LIMIT_BREAKAWAY_OK denies it (ERROR_ACCESS_DENIED) and the DELIBERATE fallback spawns IN-JOB with the loud diagnostic 'DETACH_BREAKAWAY_DENIED: launching Job Object forbids breakaway; spawned IN-JOB (may be reaped if the launching terminal closes)' — chosen so a spawn that once worked never regresses to failure. spt CANNOT grant itself breakaway: BREAKAWAY_OK is a limit only the job's CREATOR (the terminal) sets on the job; a member process has no say. CONSEQUENCE, field-observed (flynn 2026-07-25, verbatim diagnostic in hand, alchemy #22): job membership is inherited by EVERY descendant regardless of parentage — an adapter's detached service that survives the /T tree kill via a relay hop (dead ParentProcessId, alchemy ADR-0013) does NOT thereby escape the job, so if the job sets JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE, closing the launching terminal reaps shell + detached service together, relay hop notwithstanding. Whether any given terminal's job sets KILL_ON_JOB_CLOSE is node-dependent and was NOT measured — the exposure is conditional; the diagnostic is the tell. SELF-HEALING PROPERTY, already true today: the exposure is launch-path-scoped, not instance-permanent — the first daemon-side wake/relaunch re-spawns the binary from the job-neutral daemon while the same canonical id + perch survive (REQ-HAZARD-SHELL-STALE-ONLINE recovery), so cycling an instance through a daemon wake is the zero-code mitigation available now. Option space for the ruling: (a) route CLI-side launch_shell through the same job-neutral ladder the daemon cold-start uses; (b) broker the first spawn through the daemon so no shell ever rises terminal-jobbed; (c) status quo + publicly document the diagnostic as contract, so adapters can read DETACH_BREAKAWAY_DENIED as 'this instance is terminal-coupled until its first daemon wake'. Seeded from flynn's observation; census + fallback semantics code-read by doyle at seed time. FIELD FIRING (2026-07-25 17:47, this node — flynn's owlery fact set + doyle's broker-stderr forensics): the conditional exposure is no longer unmeasured — one field event consistent with KILL_ON_JOB_CLOSE firing. At daemon-stop-begin, flynn's shell (last pid 29036, relaunched 17:15 from flynn's context) and the relay-hopped alchemy Hub Daemon (pid 35472, spawned 16:51 off a DIFFERENT, earlier shell — parent long dead) died in ONE two-second window (17:47:56–58), both abruptly with bookkeeping unrun (info.json still status=online on disk), while the broker itself kept draining to final exit 2m10s LATER (stderr abrupt-end 17:50:05.8) — so the closing job's handle owner was NOT the broker; it was some stop-begin casualty (leading read: the restart-initiating context, see REQ-DAEMON-RESTART-SELF-INTERRUPTION). Disjoint parentage + disjoint spawning contexts + one instant means the job spanned processes from DIFFERENT agent contexts — an INFRA-level job, not a per-terminal one — upgrading the worst case from 'this instance is terminal-coupled' to 'one infra job-close can sweep every shell-descendant on the node at once'. The handle owner is unpinnable post-mortem (4689 process-termination auditing off on this node); recorded open.",
2026-07-26T22:33:03.2993611Z       "requiredStages": [],
2026-07-26T22:33:03.2993701Z       "stages": {
2026-07-26T22:33:03.2993786Z         "doc": {
2026-07-26T22:33:03.2993882Z           "complete": false,
2026-07-26T22:33:03.2993978Z           "evidence": []
2026-07-26T22:33:03.2994073Z         },
2026-07-26T22:33:03.2994144Z         "impl": {
2026-07-26T22:33:03.2994245Z           "complete": false,
2026-07-26T22:33:03.2994344Z           "evidence": []
2026-07-26T22:33:03.2994435Z         },
2026-07-26T22:33:03.2994506Z         "int": {
2026-07-26T22:33:03.2994608Z           "complete": false,
2026-07-26T22:33:03.2994701Z           "evidence": []
2026-07-26T22:33:03.2994777Z         },
2026-07-26T22:33:03.2994868Z         "unit": {
2026-07-26T22:33:03.2994958Z           "complete": false,
2026-07-26T22:33:03.2995047Z           "evidence": []
2026-07-26T22:33:03.2995127Z         }
2026-07-26T22:33:03.2995262Z       }
2026-07-26T22:33:03.2995342Z     },
2026-07-26T22:33:03.2995423Z     {
2026-07-26T22:33:03.2995538Z       "id": "REQ-SHELL-FRAME-VOCAB",
2026-07-26T22:33:03.3000415Z       "title": "The shell relay frame vocabulary is a PUBLISHED contract, not a reverse-engineered one. (flynn spt-alchemy clean-room audit 2026-07-21, doyle code-verified, seed pair item 1.) TODAY: shellchan.rs composes the exact frames a shell binary must parse — shell_command / shell_text / shell_file (+ shell_close, sensory, drive) — but the published export (docs-site/src/shells/) carries ZERO occurrences of those type names; the docs say only 'the shell child parses its own vocabulary', so every adapter author (notify-shell, alchemy) reverse-engineers the frame shapes compatibly from source. FIX: publish, in the shells section of the docs-site export, the frame type names + their attrs (op, xfer-id, path) + body encodings — a shell_command body is a JSON object of named args (positionals zipped against the manifest's declared arg names), a shell_text body is the raw text, a shell_file body is the original filename with the perch-relative landed path in the path attr, a shell_close body is the manifest's pre_close instruction (NOT vocabulary-checked — the vocabulary gates agent commands, the manifest is its own authority over its own binary). Fold in the quoted-composite-tail sharp edge: the vocabulary check REFUSES extra positionals (an op given more args than its declared arity errs, so a quoted composite tail must be ONE argv element). Docs-drift-gated like every published page. Gate: doc — the shells export carries the full frame vocabulary (type names, attrs, body encodings, shell_close) + the files/ landing contract (published together with REQ-SHELL-PERCH-DIR's key so the path attr is resolvable the day it is documented) + the arity sharp edge.",
2026-07-26T22:33:03.3000648Z       "requiredStages": [
2026-07-26T22:33:03.3000734Z         "doc"
2026-07-26T22:33:03.3000815Z       ],
2026-07-26T22:33:03.3000953Z       "stages": {
2026-07-26T22:33:03.3001039Z         "doc": {
2026-07-26T22:33:03.3001129Z           "complete": true,
2026-07-26T22:33:03.3001229Z           "evidence": [
2026-07-26T22:33:03.3001316Z             {
2026-07-26T22:33:03.3001444Z               "path": "docs-site/src/shells/frames.md",
2026-07-26T22:33:03.3001524Z               "line": 3
2026-07-26T22:33:03.3001612Z             }
2026-07-26T22:33:03.3001697Z           ]
2026-07-26T22:33:03.3001787Z         },
2026-07-26T22:33:03.3001863Z         "impl": {
2026-07-26T22:33:03.3001964Z           "complete": false,
2026-07-26T22:33:03.3002054Z           "evidence": []
2026-07-26T22:33:03.3002135Z         },
2026-07-26T22:33:03.3002217Z         "int": {
2026-07-26T22:33:03.3002317Z           "complete": false,
2026-07-26T22:33:03.3002397Z           "evidence": []
2026-07-26T22:33:03.3002478Z         },
2026-07-26T22:33:03.3002561Z         "unit": {
2026-07-26T22:33:03.3002650Z           "complete": false,
2026-07-26T22:33:03.3002741Z           "evidence": []
2026-07-26T22:33:03.3002823Z         }
2026-07-26T22:33:03.3002904Z       }
2026-07-26T22:33:03.3002984Z     },
2026-07-26T22:33:03.3003068Z     {
2026-07-26T22:33:03.3003198Z       "id": "REQ-SHELL-LIST-DERIVED-PROVENANCE",
2026-07-26T22:33:03.3006785Z       "title": "SEED (inactive — observability, perri-backed 2026-07-26): a status a reader can act on should be distinguishable from a status a record actually holds. Since REQ-HAZARD-SHELL-STALE-ONLINE, `shell list` renders DERIVED online-ness (recorded status AND pid-liveness), deliberately healing poisoned records at the read gate — but nothing marks WHICH rows were healed, so an agent doing forensics reads the healed view and infers a clean record (field, twice on 2026-07-26: liam inferred close_shell had run when the raw info.json still said online over a corpse pid and proposed spending flynn's live instance to manufacture a specimen they already owned; perri independently named the same misread class from their own work). Shape at activation: an additive marker on the --json row when derived != recorded (e.g. recorded_status alongside status, or derived=true) — additive-evolution posture, text view unchanged or minimally annotated; NEVER a behavior change to the derivation itself. Kin: REQ-DAEMON-BITS-AMBIGUITY (silent wrong-state a human catches only by staring at the right field) and the NEVER-SEALING-OBSERVABILITY candidate — same class, view-vs-truth.",
2026-07-26T22:33:03.3006984Z       "requiredStages": [],
2026-07-26T22:33:03.3007076Z       "stages": {
2026-07-26T22:33:03.3007171Z         "doc": {
2026-07-26T22:33:03.3007261Z           "complete": false,
2026-07-26T22:33:03.3007358Z           "evidence": []
2026-07-26T22:33:03.3007434Z         },
2026-07-26T22:33:03.3007524Z         "impl": {
2026-07-26T22:33:03.3007610Z           "complete": false,
2026-07-26T22:33:03.3007706Z           "evidence": []
2026-07-26T22:33:03.3007786Z         },
2026-07-26T22:33:03.3007881Z         "int": {
2026-07-26T22:33:03.3007978Z           "complete": false,
2026-07-26T22:33:03.3008077Z           "evidence": []
2026-07-26T22:33:03.3008162Z         },
2026-07-26T22:33:03.3008295Z         "unit": {
2026-07-26T22:33:03.3008390Z           "complete": false,
2026-07-26T22:33:03.3008483Z           "evidence": []
2026-07-26T22:33:03.3008564Z         }
2026-07-26T22:33:03.3008655Z       }
2026-07-26T22:33:03.3008723Z     },
2026-07-26T22:33:03.3008850Z     {
2026-07-26T22:33:03.3009018Z       "id": "REQ-SHELL-PERCH-DIR",
2026-07-26T22:33:03.3014736Z       "title": "A shell binary can mechanically resolve where its files land. (flynn spt-alchemy clean-room audit 2026-07-21, doyle code-verified, seed pair item 2, P1 — HARD-GATES flynn's alchemy W4.) TODAY: `spt shell send --file` lands the blob at <shell-perch>/files/<xfer-id>-<name> and the shell_file frame's path attr is PERCH-RELATIVE (files/...) — but the spawn template substitution keys are ONLY {id}/{adapter_name}/{link_token} (shellhost.rs fill_spawn_command) and the spawned child inherits the BROKER's cwd, so no mechanical perch resolution exists: the binary cannot turn the frame's path into a real file without guessing SPT_HOME layout. DOYLE RULING, both halves binding: the frame KEEPS the perch-relative path (an absolute path in a spooled frame LIES across perch moves and node boundaries — frames outlive layouts); the fix is an ADDITIVE {perch_dir} spawn-template substitution key (opt-in — templates that do not use it are byte-identical, N-1-safe by construction) filled with the shell perch dir so the binary receives its root at spawn and joins the frame's relative path against it. REFUSED, recorded so it is not re-proposed: blessing SPT_HOME layout guessing as an interim contract. Published landing contract rides REQ-SHELL-FRAME-VOCAB's page. Sequence-not-version given to flynn (no version floor before it ships). Gate: doc — the {perch_dir} key on the manifest spawn-template docs + the files/<xfer-id>-<name> landing shape on the frame-vocab page; impl — fill_spawn_command passes perch_dir alongside id/adapter_name/link_token; unit — the filled template carries the perch dir as ONE argv element (the multi-word/space path shape the argv-fill hazard exists for) and a template WITHOUT the key is byte-identical pre/post (the N-1 guarantee); int — a real spawned shell binary given {perch_dir} resolves a shell_file frame's perch-relative path to the landed blob and proves the read.",
2026-07-26T22:33:03.3014949Z       "requiredStages": [
2026-07-26T22:33:03.3015032Z         "doc",
2026-07-26T22:33:03.3015113Z         "impl",
2026-07-26T22:33:03.3015193Z         "unit",
2026-07-26T22:33:03.3015273Z         "int"
2026-07-26T22:33:03.3015352Z       ],
2026-07-26T22:33:03.3015432Z       "stages": {
2026-07-26T22:33:03.3015531Z         "doc": {
2026-07-26T22:33:03.3015627Z           "complete": true,
2026-07-26T22:33:03.3015719Z           "evidence": [
2026-07-26T22:33:03.3015798Z             {
2026-07-26T22:33:03.3015921Z               "path": "docs-site/src/shells/frames.md",
2026-07-26T22:33:03.3016007Z               "line": 130
2026-07-26T22:33:03.3016153Z             }
2026-07-26T22:33:03.3016233Z           ]
2026-07-26T22:33:03.3016324Z         },
2026-07-26T22:33:03.3016406Z         "impl": {
2026-07-26T22:33:03.3016510Z           "complete": true,
2026-07-26T22:33:03.3016596Z           "evidence": [
2026-07-26T22:33:03.3016678Z             {
2026-07-26T22:33:03.3016797Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.3016901Z               "line": 177
2026-07-26T22:33:03.3016978Z             }
2026-07-26T22:33:03.3017063Z           ]
2026-07-26T22:33:03.3017144Z         },
2026-07-26T22:33:03.3017225Z         "int": {
2026-07-26T22:33:03.3017327Z           "complete": true,
2026-07-26T22:33:03.3017422Z           "evidence": [
2026-07-26T22:33:03.3021883Z             {
2026-07-26T22:33:03.3022116Z               "path": "crates/spt/tests/shell_perch_dir_e2e.rs",
2026-07-26T22:33:03.3022226Z               "line": 72
2026-07-26T22:33:03.3022315Z             }
2026-07-26T22:33:03.3022413Z           ]
2026-07-26T22:33:03.3022488Z         },
2026-07-26T22:33:03.3022578Z         "unit": {
2026-07-26T22:33:03.3022674Z           "complete": true,
2026-07-26T22:33:03.3022969Z           "evidence": [
2026-07-26T22:33:03.3023052Z             {
2026-07-26T22:33:03.3023198Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.3023284Z               "line": 745
2026-07-26T22:33:03.3023423Z             },
2026-07-26T22:33:03.3023503Z             {
2026-07-26T22:33:03.3023642Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-07-26T22:33:03.3023728Z               "line": 773
2026-07-26T22:33:03.3023808Z             }
2026-07-26T22:33:03.3023895Z           ]
2026-07-26T22:33:03.3023976Z         }
2026-07-26T22:33:03.3024057Z       }
2026-07-26T22:33:03.3024141Z     },
2026-07-26T22:33:03.3024226Z     {
2026-07-26T22:33:03.3024361Z       "id": "REQ-SOFT-END-PRESERVES-LIVE-LISTENER",
2026-07-26T22:33:03.3029923Z       "title": "F-2 (REMOTE-TRUTH triage §F-2, field-repro'd hall-bf 2026-07-04): a /clear must not sever a SURVIVING poll listener's relay address — post-clear owl-path send hit NO_PERCH while ready was present and the inject path healthy. ROOT (source-certain): the relay registry row (id→addr + owning pid, registered by the LISTENER process itself at PollListener::bind, listener.rs:109) is DELETED by the adapter's soft `api session-end` (reporting.rs:231) fired for the DEPARTING session at /clear; but the poll listener SURVIVES /clear (a session-independent process, still bound on its port), so the deletion destroys a TRUE row. The C-2 boundary re-stamp (REQ-HAZARD-BOUNDARY-READY-STRAND) restores ready + status online but CANNOT re-register — only the listener process knows its socket addr — so every subsequent send lookup misses → NO_PERCH forever (until a listener restart re-binds). FIX: the SOFT arm of cmd_session_end unregisters CONDITIONALLY through the single liveness resolver (liveness::is_registry_entry_alive — the KH 2.5-aware resolver clean_stale_entries routes through): a row whose owner is still ALIVE is PRESERVED (the row is LISTENER-scoped truth, not session-scoped; the listener outliving /clear is the designed shape), a dead/offline row is removed (today's cleanup kept). The ERASE arm stays unconditional (a hard wipe orphans any listener; its row dies with the endpoint). Every legitimate teardown keeps its OWN unregister untouched: PollListener close/close_busy/Drop (listener.rs) and the stop verbs (cli.rs:5574/:10924). Defense-in-depth unchanged: a wrongly-preserved dead row still self-heals at delivery (deliver.rs failed-dial sweep, REQ-HAZARD-REGISTRY-STALE-CLEAN). Red-first: soft session-end with a live registered owner → row survives and lookup still resolves (pre-fix: deleted → NO_PERCH).",
2026-07-26T22:33:03.3030105Z       "requiredStages": [
2026-07-26T22:33:03.3030201Z         "impl",
2026-07-26T22:33:03.3030290Z         "unit"
2026-07-26T22:33:03.3030367Z       ],
2026-07-26T22:33:03.3030449Z       "stages": {
2026-07-26T22:33:03.3030619Z         "doc": {
2026-07-26T22:33:03.3030715Z           "complete": false,
2026-07-26T22:33:03.3030810Z           "evidence": []
2026-07-26T22:33:03.3030886Z         },
2026-07-26T22:33:03.3030981Z         "impl": {
2026-07-26T22:33:03.3031078Z           "complete": true,
2026-07-26T22:33:03.3031172Z           "evidence": [
2026-07-26T22:33:03.3031248Z             {
2026-07-26T22:33:03.3031477Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.3031568Z               "line": 264
2026-07-26T22:33:03.3031689Z             }
2026-07-26T22:33:03.3031815Z           ]
2026-07-26T22:33:03.3031938Z         },
2026-07-26T22:33:03.3032072Z         "int": {
2026-07-26T22:33:03.3032223Z           "complete": false,
2026-07-26T22:33:03.3032352Z           "evidence": []
2026-07-26T22:33:03.3032509Z         },
2026-07-26T22:33:03.3032633Z         "unit": {
2026-07-26T22:33:03.3032786Z           "complete": true,
2026-07-26T22:33:03.3032924Z           "evidence": [
2026-07-26T22:33:03.3033062Z             {
2026-07-26T22:33:03.3033200Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.3033311Z               "line": 1390
2026-07-26T22:33:03.3033481Z             },
2026-07-26T22:33:03.3033563Z             {
2026-07-26T22:33:03.3033672Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.3033768Z               "line": 1412
2026-07-26T22:33:03.3033897Z             },
2026-07-26T22:33:03.3033987Z             {
2026-07-26T22:33:03.3034130Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.3034227Z               "line": 1431
2026-07-26T22:33:03.3034312Z             }
2026-07-26T22:33:03.3034392Z           ]
2026-07-26T22:33:03.3034469Z         }
2026-07-26T22:33:03.3034561Z       }
2026-07-26T22:33:03.3034636Z     },
2026-07-26T22:33:03.3034716Z     {
2026-07-26T22:33:03.3034840Z       "id": "REQ-SPAWN-COLLISION-GUARD-LIVE-DUP",
2026-07-26T22:33:03.3037194Z       "title": "W4 (LIFECYCLE-TRUTH): single-flight wake per endpoint — the WAKE/RESUME respawn seam must not launch twice for one wake. ROOT (perri parentage + recovered filing): one wake processed TWICE within 1s — broker (306368) spawned two identical `launch --cli ccs --id flynn --resume <sid>` 1s apart, both survived; check-then-spawn TOCTOU in the spawn-side guard. DAMAGE: duplicate-perch writers STOMP info.json (the duplicate's compact re-stamped an OLD sid over a fresh /clear rotation -> injects routed to the contended record and lost). FIX: single-flight wake per endpoint (claim on the perch record or broker-side in-flight set keyed by id; second wake within the window = no-op ack), and the spawn path re-checks liveness UNDER the claim. Int: two concurrent wake requests -> exactly one launch tree.",
2026-07-26T22:33:03.3037353Z       "requiredStages": [
2026-07-26T22:33:03.3037430Z         "impl",
2026-07-26T22:33:03.3037526Z         "unit",
2026-07-26T22:33:03.3037612Z         "int"
2026-07-26T22:33:03.3037702Z       ],
2026-07-26T22:33:03.3037788Z       "stages": {
2026-07-26T22:33:03.3037884Z         "doc": {
2026-07-26T22:33:03.3037978Z           "complete": false,
2026-07-26T22:33:03.3038070Z           "evidence": []
2026-07-26T22:33:03.3038151Z         },
2026-07-26T22:33:03.3038245Z         "impl": {
2026-07-26T22:33:03.3038341Z           "complete": true,
2026-07-26T22:33:03.3038432Z           "evidence": [
2026-07-26T22:33:03.3038513Z             {
2026-07-26T22:33:03.3038651Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3038742Z               "line": 261
2026-07-26T22:33:03.3038823Z             },
2026-07-26T22:33:03.3038899Z             {
2026-07-26T22:33:03.3039086Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3039184Z               "line": 4502
2026-07-26T22:33:03.3039265Z             }
2026-07-26T22:33:03.3039349Z           ]
2026-07-26T22:33:03.3039424Z         },
2026-07-26T22:33:03.3039518Z         "int": {
2026-07-26T22:33:03.3039595Z           "complete": true,
2026-07-26T22:33:03.3039691Z           "evidence": [
2026-07-26T22:33:03.3039837Z             {
2026-07-26T22:33:03.3039980Z               "path": "crates/spt-daemon/tests/wake_single_flight.rs",
2026-07-26T22:33:03.3040066Z               "line": 127
2026-07-26T22:33:03.3040150Z             }
2026-07-26T22:33:03.3040225Z           ]
2026-07-26T22:33:03.3040307Z         },
2026-07-26T22:33:03.3040384Z         "unit": {
2026-07-26T22:33:03.3040483Z           "complete": true,
2026-07-26T22:33:03.3040564Z           "evidence": [
2026-07-26T22:33:03.3040646Z             {
2026-07-26T22:33:03.3040761Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3040850Z               "line": 8801
2026-07-26T22:33:03.3040927Z             }
2026-07-26T22:33:03.3041009Z           ]
2026-07-26T22:33:03.3041090Z         }
2026-07-26T22:33:03.3041174Z       }
2026-07-26T22:33:03.3041256Z     },
2026-07-26T22:33:03.3041338Z     {
2026-07-26T22:33:03.3041447Z       "id": "REQ-SPAWN-FRESH-TRUTHFUL",
2026-07-26T22:33:03.3044877Z       "title": "REGISTRY-LIFECYCLE W3 (ADR-0041 decision 5, spawn-fresh): endpoint create is TRUTHFUL at the broker, atomically — spawn policies split Fresh/RejectExisting vs ResumeOrReuse; new KIND_SPAWN_FRESH wire verb with TYPED conflict (distinct kind fails LOUD on an N-1 broker vs a silently-ignored serde-defaulted field), sharing the single-flight/PTY spawn body; Fresh at AlreadyLive/lost-race returns the typed conflict NEVER Spawned(existing); CLI contract exit 1 + stable ENDPOINT_CREATE_CONFLICT:<id> token + no attach + no state mutation + never kills the live session; omitted --resume keeps the documented create-default (fresh-and-conflict, same as explicit --create); preflight stays UX-only (cannot close TOCTOU). Gate: impl — policy split + verb + CLI contract; unit — intent-aware decision matrix; int — create-over-live E2E (exit 1, exact token, no attach, same broker PID) + concurrent-fresh race (one Created one Conflict, never two children, never Reused-as-success) + mixed fresh/resume race + offline/raw-Active+stale-ledger create + N-1 IPC loud-fail never-Created; doc — ADR-0041 + CLI reference regen (docs-drift gate: xtask gen, no internal codes in clap help).",
2026-07-26T22:33:03.3045121Z       "requiredStages": [
2026-07-26T22:33:03.3045201Z         "doc",
2026-07-26T22:33:03.3045290Z         "impl",
2026-07-26T22:33:03.3045375Z         "unit",
2026-07-26T22:33:03.3045457Z         "int"
2026-07-26T22:33:03.3045544Z       ],
2026-07-26T22:33:03.3045633Z       "stages": {
2026-07-26T22:33:03.3045709Z         "doc": {
2026-07-26T22:33:03.3045806Z           "complete": true,
2026-07-26T22:33:03.3045882Z           "evidence": [
2026-07-26T22:33:03.3045972Z             {
2026-07-26T22:33:03.3046111Z               "path": "docs/adr/0041-endpoint-lifecycle-truth.md",
2026-07-26T22:33:03.3046206Z               "line": 66
2026-07-26T22:33:03.3046282Z             }
2026-07-26T22:33:03.3046363Z           ]
2026-07-26T22:33:03.3046431Z         },
2026-07-26T22:33:03.3046525Z         "impl": {
2026-07-26T22:33:03.3046620Z           "complete": true,
2026-07-26T22:33:03.3046712Z           "evidence": [
2026-07-26T22:33:03.3046793Z             {
2026-07-26T22:33:03.3046916Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.3047007Z               "line": 101
2026-07-26T22:33:03.3047093Z             },
2026-07-26T22:33:03.3047188Z             {
2026-07-26T22:33:03.3047298Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.3047385Z               "line": 566
2026-07-26T22:33:03.3047464Z             },
2026-07-26T22:33:03.3047540Z             {
2026-07-26T22:33:03.3047654Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3047749Z               "line": 4144
2026-07-26T22:33:03.3047824Z             },
2026-07-26T22:33:03.3047913Z             {
2026-07-26T22:33:03.3048033Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3048129Z               "line": 4474
2026-07-26T22:33:03.3048209Z             },
2026-07-26T22:33:03.3048348Z             {
2026-07-26T22:33:03.3048462Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3048552Z               "line": 4601
2026-07-26T22:33:03.3048635Z             },
2026-07-26T22:33:03.3048725Z             {
2026-07-26T22:33:03.3048853Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.3048935Z               "line": 300
2026-07-26T22:33:03.3049097Z             },
2026-07-26T22:33:03.3049187Z             {
2026-07-26T22:33:03.3049298Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.3049383Z               "line": 313
2026-07-26T22:33:03.3049469Z             },
2026-07-26T22:33:03.3049545Z             {
2026-07-26T22:33:03.3049660Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.3049754Z               "line": 373
2026-07-26T22:33:03.3049830Z             },
2026-07-26T22:33:03.3049913Z             {
2026-07-26T22:33:03.3050017Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3050113Z               "line": 1938
2026-07-26T22:33:03.3050185Z             },
2026-07-26T22:33:03.3050271Z             {
2026-07-26T22:33:03.3050435Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3050535Z               "line": 2151
2026-07-26T22:33:03.3050616Z             },
2026-07-26T22:33:03.3050705Z             {
2026-07-26T22:33:03.3050800Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3050972Z               "line": 2249
2026-07-26T22:33:03.3051053Z             },
2026-07-26T22:33:03.3051143Z             {
2026-07-26T22:33:03.3051245Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3051335Z               "line": 2286
2026-07-26T22:33:03.3051410Z             }
2026-07-26T22:33:03.3051492Z           ]
2026-07-26T22:33:03.3051574Z         },
2026-07-26T22:33:03.3051659Z         "int": {
2026-07-26T22:33:03.3051753Z           "complete": true,
2026-07-26T22:33:03.3051826Z           "evidence": [
2026-07-26T22:33:03.3051959Z             {
2026-07-26T22:33:03.3052097Z               "path": "crates/spt-daemon/tests/spawn_truth.rs",
2026-07-26T22:33:03.3052198Z               "line": 130
2026-07-26T22:33:03.3052283Z             },
2026-07-26T22:33:03.3052369Z             {
2026-07-26T22:33:03.3052494Z               "path": "crates/spt-daemon/tests/spawn_truth.rs",
2026-07-26T22:33:03.3052593Z               "line": 166
2026-07-26T22:33:03.3052674Z             },
2026-07-26T22:33:03.3052766Z             {
2026-07-26T22:33:03.3052885Z               "path": "crates/spt-daemon/tests/spawn_truth.rs",
2026-07-26T22:33:03.3052973Z               "line": 202
2026-07-26T22:33:03.3053059Z             },
2026-07-26T22:33:03.3053135Z             {
2026-07-26T22:33:03.3053249Z               "path": "crates/spt-daemon/tests/spawn_truth.rs",
2026-07-26T22:33:03.3053343Z               "line": 245
2026-07-26T22:33:03.3053429Z             },
2026-07-26T22:33:03.3053506Z             {
2026-07-26T22:33:03.3053629Z               "path": "crates/spt-daemon/tests/spawn_truth.rs",
2026-07-26T22:33:03.3053729Z               "line": 270
2026-07-26T22:33:03.3053807Z             },
2026-07-26T22:33:03.3053892Z             {
2026-07-26T22:33:03.3054024Z               "path": "crates/spt/tests/run_no_dup_session_e2e.rs",
2026-07-26T22:33:03.3054117Z               "line": 285
2026-07-26T22:33:03.3054197Z             }
2026-07-26T22:33:03.3054277Z           ]
2026-07-26T22:33:03.3054359Z         },
2026-07-26T22:33:03.3054441Z         "unit": {
2026-07-26T22:33:03.3054530Z           "complete": true,
2026-07-26T22:33:03.3054630Z           "evidence": [
2026-07-26T22:33:03.3054708Z             {
2026-07-26T22:33:03.3054816Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3054907Z               "line": 2616
2026-07-26T22:33:03.3054983Z             }
2026-07-26T22:33:03.3055061Z           ]
2026-07-26T22:33:03.3055150Z         }
2026-07-26T22:33:03.3055226Z       }
2026-07-26T22:33:03.3055308Z     },
2026-07-26T22:33:03.3055390Z     {
2026-07-26T22:33:03.3055498Z       "id": "REQ-SPOOL-TAKE-AUDIT",
2026-07-26T22:33:03.3056484Z       "title": "W5 (LIFECYCLE-TRUTH, RCA cost: proving WHO took delivered=1 rows burned an hour): the spool records the taker per row — leg enum (relay-backlog / hook-poll / idle-inject / psyche) + sid/pid + taken_at ms — surfaced by a --json debug read. Additive column, no schema break (delivered rows already retained).",
2026-07-26T22:33:03.3056584Z       "requiredStages": [
2026-07-26T22:33:03.3056676Z         "impl",
2026-07-26T22:33:03.3056752Z         "unit"
2026-07-26T22:33:03.3056832Z       ],
2026-07-26T22:33:03.3056914Z       "stages": {
2026-07-26T22:33:03.3056996Z         "doc": {
2026-07-26T22:33:03.3057090Z           "complete": false,
2026-07-26T22:33:03.3057185Z           "evidence": []
2026-07-26T22:33:03.3057262Z         },
2026-07-26T22:33:03.3057357Z         "impl": {
2026-07-26T22:33:03.3057448Z           "complete": true,
2026-07-26T22:33:03.3057543Z           "evidence": [
2026-07-26T22:33:03.3057625Z             {
2026-07-26T22:33:03.3057748Z               "path": "crates/spt-daemon/src/inject.rs",
2026-07-26T22:33:03.3057829Z               "line": 117
2026-07-26T22:33:03.3057950Z             },
2026-07-26T22:33:03.3058033Z             {
2026-07-26T22:33:03.3058157Z               "path": "crates/spt-daemon/src/relay.rs",
2026-07-26T22:33:03.3058238Z               "line": 64
2026-07-26T22:33:03.3058332Z             },
2026-07-26T22:33:03.3058459Z             {
2026-07-26T22:33:03.3058584Z               "path": "crates/spt-msg/src/ready.rs",
2026-07-26T22:33:03.3058675Z               "line": 151
2026-07-26T22:33:03.3058765Z             },
2026-07-26T22:33:03.3058841Z             {
2026-07-26T22:33:03.3059051Z               "path": "crates/spt-msg/src/ready.rs",
2026-07-26T22:33:03.3059141Z               "line": 187
2026-07-26T22:33:03.3059233Z             },
2026-07-26T22:33:03.3059314Z             {
2026-07-26T22:33:03.3059437Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.3059576Z               "line": 452
2026-07-26T22:33:03.3059671Z             },
2026-07-26T22:33:03.3059752Z             {
2026-07-26T22:33:03.3059872Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.3059952Z               "line": 470
2026-07-26T22:33:03.3060038Z             },
2026-07-26T22:33:03.3060120Z             {
2026-07-26T22:33:03.3060229Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.3060324Z               "line": 569
2026-07-26T22:33:03.3060405Z             },
2026-07-26T22:33:03.3060488Z             {
2026-07-26T22:33:03.3060586Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.3060677Z               "line": 638
2026-07-26T22:33:03.3060759Z             },
2026-07-26T22:33:03.3060840Z             {
2026-07-26T22:33:03.3060939Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.3061033Z               "line": 701
2026-07-26T22:33:03.3061115Z             },
2026-07-26T22:33:03.3061200Z             {
2026-07-26T22:33:03.3061322Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.3061422Z               "line": 249
2026-07-26T22:33:03.3061504Z             },
2026-07-26T22:33:03.3061589Z             {
2026-07-26T22:33:03.3061689Z               "path": "crates/spt/src/api/delivery.rs",
2026-07-26T22:33:03.3061771Z               "line": 279
2026-07-26T22:33:03.3061852Z             },
2026-07-26T22:33:03.3061932Z             {
2026-07-26T22:33:03.3062042Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:03.3062129Z               "line": 134
2026-07-26T22:33:03.3062205Z             },
2026-07-26T22:33:03.3062290Z             {
2026-07-26T22:33:03.3062406Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3062495Z               "line": 1488
2026-07-26T22:33:03.3062576Z             },
2026-07-26T22:33:03.3062667Z             {
2026-07-26T22:33:03.3062768Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3062862Z               "line": 1511
2026-07-26T22:33:03.3063001Z             }
2026-07-26T22:33:03.3063083Z           ]
2026-07-26T22:33:03.3063163Z         },
2026-07-26T22:33:03.3063244Z         "int": {
2026-07-26T22:33:03.3063326Z           "complete": false,
2026-07-26T22:33:03.3063426Z           "evidence": []
2026-07-26T22:33:03.3063543Z         },
2026-07-26T22:33:03.3063633Z         "unit": {
2026-07-26T22:33:03.3063719Z           "complete": true,
2026-07-26T22:33:03.3063827Z           "evidence": [
2026-07-26T22:33:03.3063908Z             {
2026-07-26T22:33:03.3064042Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.3064133Z               "line": 852
2026-07-26T22:33:03.3064217Z             },
2026-07-26T22:33:03.3064309Z             {
2026-07-26T22:33:03.3064476Z               "path": "crates/spt-store/src/spool.rs",
2026-07-26T22:33:03.3064609Z               "line": 892
2026-07-26T22:33:03.3064695Z             }
2026-07-26T22:33:03.3064781Z           ]
2026-07-26T22:33:03.3064861Z         }
2026-07-26T22:33:03.3064944Z       }
2026-07-26T22:33:03.3065062Z     },
2026-07-26T22:33:03.3065176Z     {
2026-07-26T22:33:03.3065287Z       "id": "REQ-STAMP-CONVERGENCE-ORDER",
2026-07-26T22:33:03.3068022Z       "title": "RETIRED at W2 verify-first (doyle 2026-07-22): the C3 poll-vs-reap ordering race (hertz emphasys RCA 2026-07-16, P1) was ALREADY CLOSED by REQ-CONTROL-STAMP-CONVERGENCE (ADR-0041 decision 4, REGISTRY-LIFECYCLE W2 build todlando 2026-07-17 — one day after the RCA). Code-verified chain: the exit-waiter reap (broker.rs stamp_reaped) bumps a per-endpoint StampSlot generation UNDER the stamp-write serial then clears (the comment names the emphasys C3 window); the KIND_SESSIONS handler snapshots stamp_gen under the log lock; converge_perch_stamps validates snap_gen under the same write serial and REFUSES stale (STAMP_STALE_SKIP) — a pre-reap snapshot can never relatch controlled=true. Full stage coverage rides that REQ: unit stale_snapshot_stamp_write_refused_after_reap_generation_bump + int endpoint_lifecycle.rs:488. Kept as a stable pointer; no build owed.",
2026-07-26T22:33:03.3068214Z       "requiredStages": [],
2026-07-26T22:33:03.3068298Z       "stages": {
2026-07-26T22:33:03.3068379Z         "doc": {
2026-07-26T22:33:03.3068481Z           "complete": false,
2026-07-26T22:33:03.3068575Z           "evidence": []
2026-07-26T22:33:03.3068655Z         },
2026-07-26T22:33:03.3068745Z         "impl": {
2026-07-26T22:33:03.3068841Z           "complete": false,
2026-07-26T22:33:03.3069115Z           "evidence": []
2026-07-26T22:33:03.3069197Z         },
2026-07-26T22:33:03.3069287Z         "int": {
2026-07-26T22:33:03.3069377Z           "complete": false,
2026-07-26T22:33:03.3069474Z           "evidence": []
2026-07-26T22:33:03.3069559Z         },
2026-07-26T22:33:03.3069644Z         "unit": {
2026-07-26T22:33:03.3069735Z           "complete": false,
2026-07-26T22:33:03.3069826Z           "evidence": []
2026-07-26T22:33:03.3069902Z         }
2026-07-26T22:33:03.3070002Z       }
2026-07-26T22:33:03.3070080Z     },
2026-07-26T22:33:03.3070169Z     {
2026-07-26T22:33:03.3070264Z       "id": "REQ-START-1",
2026-07-26T22:33:03.3070451Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-07-26T22:33:03.3070551Z       "requiredStages": [
2026-07-26T22:33:03.3070645Z         "impl",
2026-07-26T22:33:03.3070728Z         "unit"
2026-07-26T22:33:03.3070822Z       ],
2026-07-26T22:33:03.3070894Z       "stages": {
2026-07-26T22:33:03.3070990Z         "doc": {
2026-07-26T22:33:03.3071081Z           "complete": false,
2026-07-26T22:33:03.3071175Z           "evidence": []
2026-07-26T22:33:03.3071257Z         },
2026-07-26T22:33:03.3071348Z         "impl": {
2026-07-26T22:33:03.3071443Z           "complete": true,
2026-07-26T22:33:03.3071532Z           "evidence": [
2026-07-26T22:33:03.3071612Z             {
2026-07-26T22:33:03.3071736Z               "path": "crates/spt-store/src/seed.rs",
2026-07-26T22:33:03.3071820Z               "line": 16
2026-07-26T22:33:03.3071901Z             }
2026-07-26T22:33:03.3071982Z           ]
2026-07-26T22:33:03.3072126Z         },
2026-07-26T22:33:03.3072206Z         "int": {
2026-07-26T22:33:03.3072307Z           "complete": false,
2026-07-26T22:33:03.3072389Z           "evidence": []
2026-07-26T22:33:03.3072464Z         },
2026-07-26T22:33:03.3072549Z         "unit": {
2026-07-26T22:33:03.3072646Z           "complete": true,
2026-07-26T22:33:03.3072727Z           "evidence": [
2026-07-26T22:33:03.3072812Z             {
2026-07-26T22:33:03.3072931Z               "path": "crates/spt-store/src/seed.rs",
2026-07-26T22:33:03.3073013Z               "line": 48
2026-07-26T22:33:03.3073089Z             },
2026-07-26T22:33:03.3073179Z             {
2026-07-26T22:33:03.3073290Z               "path": "crates/spt-store/src/seed.rs",
2026-07-26T22:33:03.3073384Z               "line": 63
2026-07-26T22:33:03.3073461Z             }
2026-07-26T22:33:03.3073542Z           ]
2026-07-26T22:33:03.3073614Z         }
2026-07-26T22:33:03.3073704Z       }
2026-07-26T22:33:03.3073790Z     },
2026-07-26T22:33:03.3073867Z     {
2026-07-26T22:33:03.3073962Z       "id": "REQ-START-2",
2026-07-26T22:33:03.3074108Z       "title": "Harness-hosted startup: api seed then listen",
2026-07-26T22:33:03.3074265Z       "requiredStages": [
2026-07-26T22:33:03.3074345Z         "impl",
2026-07-26T22:33:03.3074425Z         "unit",
2026-07-26T22:33:03.3074506Z         "int"
2026-07-26T22:33:03.3074587Z       ],
2026-07-26T22:33:03.3074716Z       "stages": {
2026-07-26T22:33:03.3074811Z         "doc": {
2026-07-26T22:33:03.3074898Z           "complete": false,
2026-07-26T22:33:03.3074998Z           "evidence": []
2026-07-26T22:33:03.3075078Z         },
2026-07-26T22:33:03.3075169Z         "impl": {
2026-07-26T22:33:03.3075251Z           "complete": true,
2026-07-26T22:33:03.3075350Z           "evidence": [
2026-07-26T22:33:03.3075426Z             {
2026-07-26T22:33:03.3075546Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.3075627Z               "line": 16
2026-07-26T22:33:03.3075722Z             },
2026-07-26T22:33:03.3075842Z             {
2026-07-26T22:33:03.3075956Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.3076051Z               "line": 131
2026-07-26T22:33:03.3076138Z             },
2026-07-26T22:33:03.3076224Z             {
2026-07-26T22:33:03.3076338Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.3076433Z               "line": 572
2026-07-26T22:33:03.3076525Z             }
2026-07-26T22:33:03.3076604Z           ]
2026-07-26T22:33:03.3076681Z         },
2026-07-26T22:33:03.3076763Z         "int": {
2026-07-26T22:33:03.3076863Z           "complete": true,
2026-07-26T22:33:03.3076942Z           "evidence": [
2026-07-26T22:33:03.3077027Z             {
2026-07-26T22:33:03.3077147Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-07-26T22:33:03.3077243Z               "line": 186
2026-07-26T22:33:03.3077328Z             }
2026-07-26T22:33:03.3077409Z           ]
2026-07-26T22:33:03.3077491Z         },
2026-07-26T22:33:03.3077586Z         "unit": {
2026-07-26T22:33:03.3077681Z           "complete": true,
2026-07-26T22:33:03.3077772Z           "evidence": [
2026-07-26T22:33:03.3077857Z             {
2026-07-26T22:33:03.3077976Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.3078068Z               "line": 1421
2026-07-26T22:33:03.3078154Z             },
2026-07-26T22:33:03.3078239Z             {
2026-07-26T22:33:03.3078343Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.3078445Z               "line": 1454
2026-07-26T22:33:03.3078534Z             }
2026-07-26T22:33:03.3078615Z           ]
2026-07-26T22:33:03.3078698Z         }
2026-07-26T22:33:03.3078779Z       }
2026-07-26T22:33:03.3078868Z     },
2026-07-26T22:33:03.3079012Z     {
2026-07-26T22:33:03.3079108Z       "id": "REQ-START-3",
2026-07-26T22:33:03.3079282Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-07-26T22:33:03.3079377Z       "requiredStages": [
2026-07-26T22:33:03.3079467Z         "impl",
2026-07-26T22:33:03.3079608Z         "unit",
2026-07-26T22:33:03.3079695Z         "int"
2026-07-26T22:33:03.3079772Z       ],
2026-07-26T22:33:03.3079861Z       "stages": {
2026-07-26T22:33:03.3079947Z         "doc": {
2026-07-26T22:33:03.3080048Z           "complete": false,
2026-07-26T22:33:03.3080138Z           "evidence": []
2026-07-26T22:33:03.3080214Z         },
2026-07-26T22:33:03.3080291Z         "impl": {
2026-07-26T22:33:03.3080391Z           "complete": true,
2026-07-26T22:33:03.3080472Z           "evidence": [
2026-07-26T22:33:03.3080557Z             {
2026-07-26T22:33:03.3080678Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-07-26T22:33:03.3080763Z               "line": 23
2026-07-26T22:33:03.3080848Z             },
2026-07-26T22:33:03.3080930Z             {
2026-07-26T22:33:03.3081034Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-07-26T22:33:03.3081129Z               "line": 221
2026-07-26T22:33:03.3081210Z             },
2026-07-26T22:33:03.3081293Z             {
2026-07-26T22:33:03.3081411Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-07-26T22:33:03.3081506Z               "line": 237
2026-07-26T22:33:03.3081655Z             },
2026-07-26T22:33:03.3081735Z             {
2026-07-26T22:33:03.3081840Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.3081942Z               "line": 17
2026-07-26T22:33:03.3082031Z             },
2026-07-26T22:33:03.3082168Z             {
2026-07-26T22:33:03.3082278Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.3082366Z               "line": 35
2026-07-26T22:33:03.3082452Z             },
2026-07-26T22:33:03.3082533Z             {
2026-07-26T22:33:03.3082644Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.3082733Z               "line": 132
2026-07-26T22:33:03.3082814Z             }
2026-07-26T22:33:03.3082892Z           ]
2026-07-26T22:33:03.3082977Z         },
2026-07-26T22:33:03.3083072Z         "int": {
2026-07-26T22:33:03.3083216Z           "complete": true,
2026-07-26T22:33:03.3083306Z           "evidence": [
2026-07-26T22:33:03.3083391Z             {
2026-07-26T22:33:03.3083511Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-07-26T22:33:03.3083597Z               "line": 478
2026-07-26T22:33:03.3083678Z             }
2026-07-26T22:33:03.3083758Z           ]
2026-07-26T22:33:03.3083841Z         },
2026-07-26T22:33:03.3083930Z         "unit": {
2026-07-26T22:33:03.3084030Z           "complete": true,
2026-07-26T22:33:03.3084102Z           "evidence": [
2026-07-26T22:33:03.3084189Z             {
2026-07-26T22:33:03.3084311Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-07-26T22:33:03.3084397Z               "line": 525
2026-07-26T22:33:03.3084480Z             },
2026-07-26T22:33:03.3084560Z             {
2026-07-26T22:33:03.3084687Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-07-26T22:33:03.3084778Z               "line": 546
2026-07-26T22:33:03.3084859Z             },
2026-07-26T22:33:03.3084947Z             {
2026-07-26T22:33:03.3085061Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-07-26T22:33:03.3085152Z               "line": 556
2026-07-26T22:33:03.3085248Z             },
2026-07-26T22:33:03.3085323Z             {
2026-07-26T22:33:03.3085449Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.3085534Z               "line": 1422
2026-07-26T22:33:03.3085624Z             },
2026-07-26T22:33:03.3085710Z             {
2026-07-26T22:33:03.3085825Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.3085906Z               "line": 1455
2026-07-26T22:33:03.3086000Z             },
2026-07-26T22:33:03.3086083Z             {
2026-07-26T22:33:03.3086201Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.3086287Z               "line": 1488
2026-07-26T22:33:03.3086373Z             }
2026-07-26T22:33:03.3086455Z           ]
2026-07-26T22:33:03.3086535Z         }
2026-07-26T22:33:03.3086620Z       }
2026-07-26T22:33:03.3086750Z     },
2026-07-26T22:33:03.3086826Z     {
2026-07-26T22:33:03.3086926Z       "id": "REQ-START-4",
2026-07-26T22:33:03.3087065Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-07-26T22:33:03.3087169Z       "requiredStages": [
2026-07-26T22:33:03.3087250Z         "impl",
2026-07-26T22:33:03.3087337Z         "unit"
2026-07-26T22:33:03.3087418Z       ],
2026-07-26T22:33:03.3087502Z       "stages": {
2026-07-26T22:33:03.3087583Z         "doc": {
2026-07-26T22:33:03.3087683Z           "complete": false,
2026-07-26T22:33:03.3087775Z           "evidence": []
2026-07-26T22:33:03.3087864Z         },
2026-07-26T22:33:03.3087954Z         "impl": {
2026-07-26T22:33:03.3088047Z           "complete": true,
2026-07-26T22:33:03.3088137Z           "evidence": [
2026-07-26T22:33:03.3088221Z             {
2026-07-26T22:33:03.3088342Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.3088432Z               "line": 738
2026-07-26T22:33:03.3088517Z             }
2026-07-26T22:33:03.3088603Z           ]
2026-07-26T22:33:03.3088690Z         },
2026-07-26T22:33:03.3088785Z         "int": {
2026-07-26T22:33:03.3088923Z           "complete": false,
2026-07-26T22:33:03.3089099Z           "evidence": []
2026-07-26T22:33:03.3089190Z         },
2026-07-26T22:33:03.3089263Z         "unit": {
2026-07-26T22:33:03.3089362Z           "complete": true,
2026-07-26T22:33:03.3089442Z           "evidence": [
2026-07-26T22:33:03.3089577Z             {
2026-07-26T22:33:03.3089696Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.3089790Z               "line": 1667
2026-07-26T22:33:03.3089870Z             }
2026-07-26T22:33:03.3089957Z           ]
2026-07-26T22:33:03.3090027Z         }
2026-07-26T22:33:03.3090116Z       }
2026-07-26T22:33:03.3090192Z     },
2026-07-26T22:33:03.3090279Z     {
2026-07-26T22:33:03.3090370Z       "id": "REQ-START-5",
2026-07-26T22:33:03.3093122Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-07-26T22:33:03.3093284Z       "requiredStages": [
2026-07-26T22:33:03.3093369Z         "doc",
2026-07-26T22:33:03.3093466Z         "impl",
2026-07-26T22:33:03.3093552Z         "unit",
2026-07-26T22:33:03.3093636Z         "int"
2026-07-26T22:33:03.3093713Z       ],
2026-07-26T22:33:03.3093809Z       "stages": {
2026-07-26T22:33:03.3093895Z         "doc": {
2026-07-26T22:33:03.3093994Z           "complete": true,
2026-07-26T22:33:03.3094086Z           "evidence": [
2026-07-26T22:33:03.3094166Z             {
2026-07-26T22:33:03.3094266Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.3094352Z               "line": 206
2026-07-26T22:33:03.3094434Z             },
2026-07-26T22:33:03.3094519Z             {
2026-07-26T22:33:03.3094643Z               "path": "docs-site/src/harness-contract/api.md",
2026-07-26T22:33:03.3094740Z               "line": 41
2026-07-26T22:33:03.3094815Z             }
2026-07-26T22:33:03.3094895Z           ]
2026-07-26T22:33:03.3094972Z         },
2026-07-26T22:33:03.3095069Z         "impl": {
2026-07-26T22:33:03.3095158Z           "complete": true,
2026-07-26T22:33:03.3095252Z           "evidence": [
2026-07-26T22:33:03.3095338Z             {
2026-07-26T22:33:03.3095522Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-07-26T22:33:03.3095612Z               "line": 26
2026-07-26T22:33:03.3095703Z             },
2026-07-26T22:33:03.3095794Z             {
2026-07-26T22:33:03.3095917Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-07-26T22:33:03.3095999Z               "line": 218
2026-07-26T22:33:03.3096090Z             },
2026-07-26T22:33:03.3096175Z             {
2026-07-26T22:33:03.3096294Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-07-26T22:33:03.3096380Z               "line": 227
2026-07-26T22:33:03.3096471Z             },
2026-07-26T22:33:03.3096551Z             {
2026-07-26T22:33:03.3096657Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:03.3096747Z               "line": 596
2026-07-26T22:33:03.3096837Z             },
2026-07-26T22:33:03.3096914Z             {
2026-07-26T22:33:03.3097038Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.3097119Z               "line": 36
2026-07-26T22:33:03.3097205Z             },
2026-07-26T22:33:03.3097287Z             {
2026-07-26T22:33:03.3097463Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.3097558Z               "line": 134
2026-07-26T22:33:03.3097645Z             },
2026-07-26T22:33:03.3097734Z             {
2026-07-26T22:33:03.3097834Z               "path": "crates/spt/src/api/startup.rs",
2026-07-26T22:33:03.3097964Z               "line": 665
2026-07-26T22:33:03.3098039Z             }
2026-07-26T22:33:03.3098133Z           ]
2026-07-26T22:33:03.3098214Z         },
2026-07-26T22:33:03.3098306Z         "int": {
2026-07-26T22:33:03.3098396Z           "complete": true,
2026-07-26T22:33:03.3098491Z           "evidence": [
2026-07-26T22:33:03.3098577Z             {
2026-07-26T22:33:03.3098702Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-07-26T22:33:03.3098791Z               "line": 17
2026-07-26T22:33:03.3098869Z             }
2026-07-26T22:33:03.3099054Z           ]
2026-07-26T22:33:03.3099145Z         },
2026-07-26T22:33:03.3099236Z         "unit": {
2026-07-26T22:33:03.3099330Z           "complete": true,
2026-07-26T22:33:03.3099411Z           "evidence": [
2026-07-26T22:33:03.3099498Z             {
2026-07-26T22:33:03.3099617Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-07-26T22:33:03.3099703Z               "line": 364
2026-07-26T22:33:03.3099784Z             },
2026-07-26T22:33:03.3099865Z             {
2026-07-26T22:33:03.3099978Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-07-26T22:33:03.3100074Z               "line": 377
2026-07-26T22:33:03.3100152Z             },
2026-07-26T22:33:03.3100237Z             {
2026-07-26T22:33:03.3100335Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:03.3100430Z               "line": 727
2026-07-26T22:33:03.3100517Z             }
2026-07-26T22:33:03.3100601Z           ]
2026-07-26T22:33:03.3100686Z         }
2026-07-26T22:33:03.3100777Z       }
2026-07-26T22:33:03.3100863Z     },
2026-07-26T22:33:03.3100953Z     {
2026-07-26T22:33:03.3101043Z       "id": "REQ-STORE-1",
2026-07-26T22:33:03.3101873Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-07-26T22:33:03.3101973Z       "requiredStages": [
2026-07-26T22:33:03.3102050Z         "impl",
2026-07-26T22:33:03.3102146Z         "unit"
2026-07-26T22:33:03.3102227Z       ],
2026-07-26T22:33:03.3102307Z       "stages": {
2026-07-26T22:33:03.3102380Z         "doc": {
2026-07-26T22:33:03.3102503Z           "complete": false,
2026-07-26T22:33:03.3102607Z           "evidence": []
2026-07-26T22:33:03.3102700Z         },
2026-07-26T22:33:03.3102785Z         "impl": {
2026-07-26T22:33:03.3102889Z           "complete": true,
2026-07-26T22:33:03.3103105Z           "evidence": [
2026-07-26T22:33:03.3103189Z             {
2026-07-26T22:33:03.3103322Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.3103422Z               "line": 23
2026-07-26T22:33:03.3103515Z             },
2026-07-26T22:33:03.3103605Z             {
2026-07-26T22:33:03.3103721Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.3103816Z               "line": 48
2026-07-26T22:33:03.3103896Z             },
2026-07-26T22:33:03.3103978Z             {
2026-07-26T22:33:03.3104092Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.3104187Z               "line": 150
2026-07-26T22:33:03.3104263Z             },
2026-07-26T22:33:03.3104346Z             {
2026-07-26T22:33:03.3104473Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.3104564Z               "line": 178
2026-07-26T22:33:03.3104641Z             },
2026-07-26T22:33:03.3104726Z             {
2026-07-26T22:33:03.3104845Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.3104941Z               "line": 293
2026-07-26T22:33:03.3105084Z             },
2026-07-26T22:33:03.3105174Z             {
2026-07-26T22:33:03.3105295Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.3105393Z               "line": 317
2026-07-26T22:33:03.3105484Z             },
2026-07-26T22:33:03.3105652Z             {
2026-07-26T22:33:03.3110048Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.3110177Z               "line": 553
2026-07-26T22:33:03.3110272Z             },
2026-07-26T22:33:03.3110349Z             {
2026-07-26T22:33:03.3110497Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.3110587Z               "line": 25
2026-07-26T22:33:03.3110673Z             },
2026-07-26T22:33:03.3110750Z             {
2026-07-26T22:33:03.3110891Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.3111062Z               "line": 120
2026-07-26T22:33:03.3111157Z             },
2026-07-26T22:33:03.3111241Z             {
2026-07-26T22:33:03.3111361Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.3111442Z               "line": 167
2026-07-26T22:33:03.3111528Z             },
2026-07-26T22:33:03.3111608Z             {
2026-07-26T22:33:03.3111738Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.3111823Z               "line": 184
2026-07-26T22:33:03.3111908Z             },
2026-07-26T22:33:03.3111981Z             {
2026-07-26T22:33:03.3112104Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.3112185Z               "line": 199
2026-07-26T22:33:03.3112271Z             },
2026-07-26T22:33:03.3112358Z             {
2026-07-26T22:33:03.3112481Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.3112562Z               "line": 217
2026-07-26T22:33:03.3112649Z             },
2026-07-26T22:33:03.3112729Z             {
2026-07-26T22:33:03.3112848Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.3112930Z               "line": 226
2026-07-26T22:33:03.3113016Z             },
2026-07-26T22:33:03.3113091Z             {
2026-07-26T22:33:03.3113216Z               "path": "crates/spt-store/src/project.rs",
2026-07-26T22:33:03.3113298Z               "line": 16
2026-07-26T22:33:03.3113378Z             },
2026-07-26T22:33:03.3113459Z             {
2026-07-26T22:33:03.3113579Z               "path": "crates/spt-store/src/project.rs",
2026-07-26T22:33:03.3113665Z               "line": 63
2026-07-26T22:33:03.3113753Z             },
2026-07-26T22:33:03.3113834Z             {
2026-07-26T22:33:03.3113954Z               "path": "crates/spt-store/src/project.rs",
2026-07-26T22:33:03.3114033Z               "line": 92
2026-07-26T22:33:03.3114118Z             }
2026-07-26T22:33:03.3114199Z           ]
2026-07-26T22:33:03.3114281Z         },
2026-07-26T22:33:03.3114367Z         "int": {
2026-07-26T22:33:03.3114548Z           "complete": false,
2026-07-26T22:33:03.3114667Z           "evidence": []
2026-07-26T22:33:03.3114752Z         },
2026-07-26T22:33:03.3114843Z         "unit": {
2026-07-26T22:33:03.3114934Z           "complete": true,
2026-07-26T22:33:03.3115043Z           "evidence": [
2026-07-26T22:33:03.3115153Z             {
2026-07-26T22:33:03.3115349Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.3115467Z               "line": 815
2026-07-26T22:33:03.3115592Z             },
2026-07-26T22:33:03.3115729Z             {
2026-07-26T22:33:03.3115907Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.3116040Z               "line": 825
2026-07-26T22:33:03.3116145Z             },
2026-07-26T22:33:03.3116259Z             {
2026-07-26T22:33:03.3116439Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.3116548Z               "line": 847
2026-07-26T22:33:03.3116661Z             },
2026-07-26T22:33:03.3116771Z             {
2026-07-26T22:33:03.3116956Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.3117076Z               "line": 863
2026-07-26T22:33:03.3117361Z             },
2026-07-26T22:33:03.3117434Z             {
2026-07-26T22:33:03.3117558Z               "path": "crates/spt-store/src/branchstore.rs",
2026-07-26T22:33:03.3117628Z               "line": 947
2026-07-26T22:33:03.3117773Z             },
2026-07-26T22:33:03.3117848Z             {
2026-07-26T22:33:03.3117977Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.3118063Z               "line": 522
2026-07-26T22:33:03.3118153Z             },
2026-07-26T22:33:03.3118234Z             {
2026-07-26T22:33:03.3118354Z               "path": "crates/spt-store/src/contextstore.rs",
2026-07-26T22:33:03.3118431Z               "line": 557
2026-07-26T22:33:03.3118520Z             },
2026-07-26T22:33:03.3118597Z             {
2026-07-26T22:33:03.3118712Z               "path": "crates/spt-store/src/project.rs",
2026-07-26T22:33:03.3118839Z               "line": 151
2026-07-26T22:33:03.3118931Z             },
2026-07-26T22:33:03.3119089Z             {
2026-07-26T22:33:03.3119202Z               "path": "crates/spt-store/src/project.rs",
2026-07-26T22:33:03.3119291Z               "line": 159
2026-07-26T22:33:03.3119378Z             }
2026-07-26T22:33:03.3119460Z           ]
2026-07-26T22:33:03.3119535Z         }
2026-07-26T22:33:03.3119630Z       }
2026-07-26T22:33:03.3119698Z     },
2026-07-26T22:33:03.3119788Z     {
2026-07-26T22:33:03.3119902Z       "id": "REQ-STORE-CONTEXT-BRANCH-FILL",
2026-07-26T22:33:03.3121385Z       "title": "#1 SI-1 (RCA, operator-promoted 2026-07-03): the context store (tracked/.seed.git) holds ZERO p-* branches on a box with months of live-agent use, while kitsubito/enlyzeam stores carry them. Context commits never land -> picker history has no store source (REQ-PICKER-PROJECT-HISTORY-TRUTH's fallback ships regardless, but the store must ALSO fill). RCA the contextstore write->branch-commit path with evidence (commune-ingest/context-commit regression vs store re-init), contrast the healthy stores, land whatever fix the RCA names. See docs/NEXT-MILESTONE-PICKER-TRIAGE.md #1 SI-1.",
2026-07-26T22:33:03.3121489Z       "requiredStages": [
2026-07-26T22:33:03.3121580Z         "doc",
2026-07-26T22:33:03.3121665Z         "impl",
2026-07-26T22:33:03.3121749Z         "unit",
2026-07-26T22:33:03.3121830Z         "int"
2026-07-26T22:33:03.3121921Z       ],
2026-07-26T22:33:03.3121998Z       "stages": {
2026-07-26T22:33:03.3122078Z         "doc": {
2026-07-26T22:33:03.3122173Z           "complete": true,
2026-07-26T22:33:03.3122259Z           "evidence": [
2026-07-26T22:33:03.3122345Z             {
2026-07-26T22:33:03.3122445Z               "path": "docs/KNOWN-HAZARDS.md",
2026-07-26T22:33:03.3122531Z               "line": 573
2026-07-26T22:33:03.3122613Z             }
2026-07-26T22:33:03.3122698Z           ]
2026-07-26T22:33:03.3122774Z         },
2026-07-26T22:33:03.3122851Z         "impl": {
2026-07-26T22:33:03.3123003Z           "complete": true,
2026-07-26T22:33:03.3123088Z           "evidence": [
2026-07-26T22:33:03.3123160Z             {
2026-07-26T22:33:03.3123289Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.3123385Z               "line": 211
2026-07-26T22:33:03.3123471Z             },
2026-07-26T22:33:03.3123552Z             {
2026-07-26T22:33:03.3123675Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.3123766Z               "line": 225
2026-07-26T22:33:03.3123848Z             },
2026-07-26T22:33:03.3123924Z             {
2026-07-26T22:33:03.3124047Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.3124129Z               "line": 622
2026-07-26T22:33:03.3124211Z             },
2026-07-26T22:33:03.3124295Z             {
2026-07-26T22:33:03.3124413Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:03.3124499Z               "line": 161
2026-07-26T22:33:03.3124584Z             }
2026-07-26T22:33:03.3124659Z           ]
2026-07-26T22:33:03.3124744Z         },
2026-07-26T22:33:03.3124826Z         "int": {
2026-07-26T22:33:03.3124978Z           "complete": true,
2026-07-26T22:33:03.3125059Z           "evidence": [
2026-07-26T22:33:03.3125137Z             {
2026-07-26T22:33:03.3125256Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.3125350Z               "line": 2015
2026-07-26T22:33:03.3125475Z             }
2026-07-26T22:33:03.3125556Z           ]
2026-07-26T22:33:03.3125636Z         },
2026-07-26T22:33:03.3125727Z         "unit": {
2026-07-26T22:33:03.3125814Z           "complete": true,
2026-07-26T22:33:03.3125909Z           "evidence": [
2026-07-26T22:33:03.3125984Z             {
2026-07-26T22:33:03.3126105Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.3126185Z               "line": 1973
2026-07-26T22:33:03.3126275Z             },
2026-07-26T22:33:03.3126352Z             {
2026-07-26T22:33:03.3126528Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.3126619Z               "line": 2000
2026-07-26T22:33:03.3126706Z             },
2026-07-26T22:33:03.3126782Z             {
2026-07-26T22:33:03.3126899Z               "path": "crates/spt-live/src/ingest.rs",
2026-07-26T22:33:03.3126989Z               "line": 438
2026-07-26T22:33:03.3127071Z             }
2026-07-26T22:33:03.3127155Z           ]
2026-07-26T22:33:03.3127245Z         }
2026-07-26T22:33:03.3127345Z       }
2026-07-26T22:33:03.3127427Z     },
2026-07-26T22:33:03.3127512Z     {
2026-07-26T22:33:03.3127631Z       "id": "REQ-STREAM-INFOS-SERVER-FILTER",
2026-07-26T22:33:03.3129626Z       "title": "REGISTRY-LIFECYCLE W1 (ADR-0040 decision 2, hertz defect B leg 2): broker stream_infos excludes initiated_locally rows SERVER-SIDE (retired already excluded) before cloning/serializing to the dispatcher — the O(history) IPC enumeration cost dies at the source. Dispatcher keeps its client-side guard (double-filter harmless; N-1 compatible both directions: older dispatcher skips those rows anyway, older broker just keeps the old cost). Gate: impl — server-side filter; unit — local rows absent from the reply while peer-initiated rows with bytes remain, opener/re-attach enumeration semantics unchanged.",
2026-07-26T22:33:03.3129733Z       "requiredStages": [
2026-07-26T22:33:03.3129823Z         "impl",
2026-07-26T22:33:03.3129904Z         "unit"
2026-07-26T22:33:03.3129991Z       ],
2026-07-26T22:33:03.3130071Z       "stages": {
2026-07-26T22:33:03.3130157Z         "doc": {
2026-07-26T22:33:03.3130258Z           "complete": false,
2026-07-26T22:33:03.3130358Z           "evidence": []
2026-07-26T22:33:03.3130438Z         },
2026-07-26T22:33:03.3130529Z         "impl": {
2026-07-26T22:33:03.3130620Z           "complete": true,
2026-07-26T22:33:03.3130715Z           "evidence": [
2026-07-26T22:33:03.3130786Z             {
2026-07-26T22:33:03.3130921Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3131001Z               "line": 5790
2026-07-26T22:33:03.3131149Z             },
2026-07-26T22:33:03.3131226Z             {
2026-07-26T22:33:03.3131345Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3131426Z               "line": 1879
2026-07-26T22:33:03.3131508Z             }
2026-07-26T22:33:03.3131583Z           ]
2026-07-26T22:33:03.3131664Z         },
2026-07-26T22:33:03.3131745Z         "int": {
2026-07-26T22:33:03.3131842Z           "complete": true,
2026-07-26T22:33:03.3131932Z           "evidence": [
2026-07-26T22:33:03.3132012Z             {
2026-07-26T22:33:03.3132130Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-07-26T22:33:03.3132216Z               "line": 391
2026-07-26T22:33:03.3132295Z             }
2026-07-26T22:33:03.3132376Z           ]
2026-07-26T22:33:03.3132457Z         },
2026-07-26T22:33:03.3132544Z         "unit": {
2026-07-26T22:33:03.3132643Z           "complete": true,
2026-07-26T22:33:03.3132723Z           "evidence": [
2026-07-26T22:33:03.3132810Z             {
2026-07-26T22:33:03.3132929Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3133024Z               "line": 3111
2026-07-26T22:33:03.3133154Z             }
2026-07-26T22:33:03.3133234Z           ]
2026-07-26T22:33:03.3133315Z         }
2026-07-26T22:33:03.3133401Z       }
2026-07-26T22:33:03.3133478Z     },
2026-07-26T22:33:03.3133559Z     {
2026-07-26T22:33:03.3133711Z       "id": "REQ-STREAM-LEASE-CLASSES",
2026-07-26T22:33:03.3137131Z       "title": "REGISTRY-LIFECYCLE W2 (ADR-0040 decision 6 + ADR-0041, emphasys C2 P0): streams declare a lifetime class at open — RC attach/view streams are ConnectionBound (opener conn EOF means the target sees FIN, serve_attach runs detach_session, controller slot + CONTROLLED stamps clear — a dead viewer can never pin a controller across its own connection death; today the raw-closed viewport attach stream is restart-durable forever); inter-brain streams stay Durable (NEVER globally retire on Brain disconnect — brain-swap correctness depends on it). Late-close identity validated (stale opener A close cannot evict newer controller B — rides ADR-0038 Amendment fix-6 generation tokens + W1 seat teardown machinery; same neighborhood, built once per the standing C2 coordination ruling). Lifetime class = additive open field, absent = Durable (N-1 openers keep exact current semantics). Gate: impl — class at open + ConnectionBound EOF chain; unit — class routing + absent-defaults-Durable + late-close identity refusal; int — raw viewport close frees the controller full-chain incl. across broker restart, brain_swap/daemon_refresh/redispatch legs stay green; doc — ADR-0040/0041.",
2026-07-26T22:33:03.3137309Z       "requiredStages": [
2026-07-26T22:33:03.3137394Z         "doc",
2026-07-26T22:33:03.3137483Z         "impl",
2026-07-26T22:33:03.3137564Z         "unit",
2026-07-26T22:33:03.3137660Z         "int"
2026-07-26T22:33:03.3137743Z       ],
2026-07-26T22:33:03.3137833Z       "stages": {
2026-07-26T22:33:03.3137905Z         "doc": {
2026-07-26T22:33:03.3138001Z           "complete": true,
2026-07-26T22:33:03.3138086Z           "evidence": [
2026-07-26T22:33:03.3138172Z             {
2026-07-26T22:33:03.3138369Z               "path": "docs/adr/0040-bounded-stream-seat-lifecycle-one-way-terminal.md",
2026-07-26T22:33:03.3138453Z               "line": 79
2026-07-26T22:33:03.3138535Z             }
2026-07-26T22:33:03.3138616Z           ]
2026-07-26T22:33:03.3138697Z         },
2026-07-26T22:33:03.3138792Z         "impl": {
2026-07-26T22:33:03.3138888Z           "complete": true,
2026-07-26T22:33:03.3139063Z           "evidence": [
2026-07-26T22:33:03.3139144Z             {
2026-07-26T22:33:03.3139283Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:03.3139364Z               "line": 672
2026-07-26T22:33:03.3139441Z             },
2026-07-26T22:33:03.3139523Z             {
2026-07-26T22:33:03.3139645Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.3139726Z               "line": 1547
2026-07-26T22:33:03.3139871Z             },
2026-07-26T22:33:03.3139955Z             {
2026-07-26T22:33:03.3140080Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3140171Z               "line": 4122
2026-07-26T22:33:03.3140251Z             },
2026-07-26T22:33:03.3140341Z             {
2026-07-26T22:33:03.3140455Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3140551Z               "line": 4231
2026-07-26T22:33:03.3140631Z             },
2026-07-26T22:33:03.3140717Z             {
2026-07-26T22:33:03.3140833Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3140928Z               "line": 4441
2026-07-26T22:33:03.3141003Z             },
2026-07-26T22:33:03.3141094Z             {
2026-07-26T22:33:03.3141204Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3141299Z               "line": 5679
2026-07-26T22:33:03.3141380Z             },
2026-07-26T22:33:03.3141462Z             {
2026-07-26T22:33:03.3141581Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.3141680Z               "line": 853
2026-07-26T22:33:03.3141763Z             },
2026-07-26T22:33:03.3141929Z             {
2026-07-26T22:33:03.3142034Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.3142130Z               "line": 934
2026-07-26T22:33:03.3142209Z             },
2026-07-26T22:33:03.3142305Z             {
2026-07-26T22:33:03.3142505Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3142600Z               "line": 847
2026-07-26T22:33:03.3142681Z             }
2026-07-26T22:33:03.3142776Z           ]
2026-07-26T22:33:03.3142851Z         },
2026-07-26T22:33:03.3142940Z         "int": {
2026-07-26T22:33:03.3143031Z           "complete": true,
2026-07-26T22:33:03.3143128Z           "evidence": [
2026-07-26T22:33:03.3143208Z             {
2026-07-26T22:33:03.3143356Z               "path": "crates/spt-daemon/tests/endpoint_lifecycle.rs",
2026-07-26T22:33:03.3143438Z               "line": 237
2026-07-26T22:33:03.3143593Z             }
2026-07-26T22:33:03.3143676Z           ]
2026-07-26T22:33:03.3143761Z         },
2026-07-26T22:33:03.3143842Z         "unit": {
2026-07-26T22:33:03.3143937Z           "complete": true,
2026-07-26T22:33:03.3144024Z           "evidence": [
2026-07-26T22:33:03.3144110Z             {
2026-07-26T22:33:03.3144228Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3144325Z               "line": 8415
2026-07-26T22:33:03.3144405Z             },
2026-07-26T22:33:03.3144486Z             {
2026-07-26T22:33:03.3144586Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.3144672Z               "line": 1402
2026-07-26T22:33:03.3144758Z             },
2026-07-26T22:33:03.3144834Z             {
2026-07-26T22:33:03.3144954Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3145035Z               "line": 2402
2026-07-26T22:33:03.3145119Z             }
2026-07-26T22:33:03.3145201Z           ]
2026-07-26T22:33:03.3145288Z         }
2026-07-26T22:33:03.3145368Z       }
2026-07-26T22:33:03.3145444Z     },
2026-07-26T22:33:03.3145524Z     {
2026-07-26T22:33:03.3145638Z       "id": "REQ-STREAM-LIFETIME-CLASS",
2026-07-26T22:33:03.3162611Z       "title": "RESCOPED at W2 activation 2026-07-22 (doyle verify-first, C3-retirement precedent): the CLEAN-CASE chain this REQ was minted for is ALREADY SHIPPED under REQ-STREAM-LEASE-CLASSES / ADR-0040 decision 6, verified against @7c0f12d — StreamLifetime is opener-declared and on the wire, serde-default Durable so N-1 openers keep exact today-semantics (msg.rs:810-836 + the additive-wire unit @msg.rs:1408); rc attach/view is the SOLE ConnectionBound opener (attach.rs:667-677); the broker binds the class at open (broker.rs:5689) and nethost carries it per StreamEntry (nethost.rs:1059-1076); the conn-exit sweep FINs each ConnectionBound stream toward its target and terminal-retires the local row while Durable rows never enter it (broker.rs:4118-4123/4227-4235/4429-4446); the target's serve_attach EOF arm runs detach_session_gen(serve_gen) so controller/viewer stamps clear on exactly one generation (attach.rs:580-597); the late-close gen guard (broker.rs:2179-2192, unit @8416) and converge_perch_stamps close the race; int coverage rides endpoint_lifecycle.rs:241. Building that again would re-implement shipped code — the C3 lesson. WHAT REMAINS, and what this REQ now owns: RESTART-REPLAY RE-ESTABLISHMENT. ADR-0038 dispatch replay re-serves every retained opener Attach across a dispatcher generation, and a ConnectionBound opener REPLAYING is a class contradiction — the conn that declared the class cannot exist after the restart that killed it, so re-serving resurrects a seat whose declared lifetime already ended. FIX: the dispatcher's restart-durable classification (ADR-0038 decision 2, dispatch.rs first_line) gains lifetime, and the replay filter TERMINAL-RETIRES ConnectionBound openers instead of re-serving them. Deliberately PRECISE, not ADR-0038's rejected clear-table-on-restart: Durable/brain-swap semantics are untouched and the brain_swap / daemon_refresh / redispatch D1+D1b families staying green IS the proof. The filter runs UPSTREAM of the W1 idempotence key (endpoint/session, by, conn, gen, from_seq) — a filtered opener never reaches serve, so the two mechanisms compose rather than overlap. Gate: impl — lifetime on the replay classification + the terminal-retire filter; unit — the filter predicate (ConnectionBound retires / Durable replays / unclassifiable stays terminal as today); int — RED-first: kill the rc opener raw, restart the broker, pre-fix the seat and CONTROLLED stamps re-establish via replay, post-fix they stay clear, with the D-legs green alongside. Kin REQ-STREAM-LEASE-CLASSES (the shipped clean case), REQ-ATTACH-IDEMPOTENT-REPLAY (downstream), REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT (the live no-FIN sibling, same wave). RESCOPE 2 — MEASURED 2026-07-22 (todlando, Leg A rig `restart_replay_lifetime.rs`, GREEN with its sibling probe passing): the FIX ABOVE IS NOT OWED. The premise was pre-registered as falsifiable by doyle BEFORE the rig was built, and the rig falsified it: in the residual ordering (dispatcher generation dies FIRST so no serve worker and no Served report, THEN the rc opener dies RAW with no detach frame) a fresh generation does NOT resurrect the seat — stamps stay clear and no DISPATCH line touches the dead opener's row. The population is closed BY COMPOSITION: the conn-exit sweep fires for this kill shape (`STREAM_CONNBOUND_RETIRE:<id>: opener conn exited — FIN + terminal retire`), the ConnectionBound opener row leaves the table entirely, its peer row carries the FIN as finished=true, and the worker's family-aware finished_row_is_terminal(Attach,true) retires it UNSERVED. TWO PRE-REGISTERED SUB-QUESTIONS ANSWERED, and the first is the non-obvious finding: (1) `retire` does NOT exclude from the CLAIM condition on this path — the dead opener's row is STILL in the dispatcher's claimable enumeration, merely finished=true, so what stops the replay sits DOWNSTREAM of the claim (retire-on-sight in the worker), which is ADR-0038 decision 1's `excluded by lifecycle state` arm and NOT its `removed from the enumeration` arm; (2) the sweep DID run for this kill shape. Consequently NO wire field (already settled independently: the re-served row registers Durable, class-blind by design at nethost.rs:1028-1041 / 1763-1771, so a lifetime field on the opener reply would report Durable for exactly the population a filter exists to catch) and NO broker-side enumeration filter are built. Stages drop to int ONLY — impl/unit are deactivated rather than pre-failed (the `activate, don't pre-fail` rule; the C2/C3 verify-first precedent), and the int evidence is the standing regression guard the property never had. SCOPE LIMIT STATED, NOT IMPLIED — and TIGHTENED 2026-07-22 (doyle rider, todlando self-flagged): the measurement rides the IN-PROCESS DUPLEX, which is the honest word and is tighter than the `loopback` this text first said. net_dial_loopback / open_loopback_pair yield a RecvHalf::Loopback duplex with NO QUIC ANYWHERE and NO idle timeout — a different transport leaf from RecvHalf::Quic; BindScope::Loopback plus a real net_dial WOULD be real QUIC over 127.0.0.1, and the two senses of `loopback` in this repo are NOT the same thing (the naming collision is itself an ADR-0040 amendment item, so future rigs pick their venue deliberately). Consequently the cross-node `conn.closed()` arm (nethost.rs:1000-1021) is a different mechanism reaching the same outcome and is NOT exercised, and a real-QUIC transport death sans FIN remains Leg B's instrument-first residual under REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT.",
2026-07-26T22:33:03.3163082Z       "requiredStages": [
2026-07-26T22:33:03.3163169Z         "int"
2026-07-26T22:33:03.3163260Z       ],
2026-07-26T22:33:03.3163344Z       "stages": {
2026-07-26T22:33:03.3163430Z         "doc": {
2026-07-26T22:33:03.3163522Z           "complete": true,
2026-07-26T22:33:03.3163607Z           "evidence": [
2026-07-26T22:33:03.3163692Z             {
2026-07-26T22:33:03.3163901Z               "path": "docs/adr/0040-bounded-stream-seat-lifecycle-one-way-terminal.md",
2026-07-26T22:33:03.3164023Z               "line": 117
2026-07-26T22:33:03.3164103Z             }
2026-07-26T22:33:03.3164185Z           ]
2026-07-26T22:33:03.3164272Z         },
2026-07-26T22:33:03.3164356Z         "impl": {
2026-07-26T22:33:03.3164457Z           "complete": false,
2026-07-26T22:33:03.3164576Z           "evidence": []
2026-07-26T22:33:03.3164657Z         },
2026-07-26T22:33:03.3164742Z         "int": {
2026-07-26T22:33:03.3164839Z           "complete": true,
2026-07-26T22:33:03.3164920Z           "evidence": [
2026-07-26T22:33:03.3165000Z             {
2026-07-26T22:33:03.3165149Z               "path": "crates/spt-daemon/tests/restart_replay_lifetime.rs",
2026-07-26T22:33:03.3165244Z               "line": 350
2026-07-26T22:33:03.3165324Z             }
2026-07-26T22:33:03.3165411Z           ]
2026-07-26T22:33:03.3165501Z         },
2026-07-26T22:33:03.3165644Z         "unit": {
2026-07-26T22:33:03.3165735Z           "complete": false,
2026-07-26T22:33:03.3165835Z           "evidence": []
2026-07-26T22:33:03.3165916Z         }
2026-07-26T22:33:03.3166002Z       }
2026-07-26T22:33:03.3166079Z     },
2026-07-26T22:33:03.3166169Z     {
2026-07-26T22:33:03.3166274Z       "id": "REQ-STREAM-OPENER-DURABLE",
2026-07-26T22:33:03.3169872Z       "title": "REDISPATCH-TRUTH W1 (ADR-0038, hertz fix B): stream classification identity is RESTART-DURABLE and independent of the evictable data ring — today reconstruction classifies via peek_first_line from ring seq 0, but StreamLog is a bounded 4096-transport-chunk ring (DEFAULT_STREAM_RING_CHUNKS, nethost.rs:111), so a high-traffic ACTIVE stream's opener/Request record evicts and replay classifies Unknown/Failed = active stream permanently abandoned. Pin an immutable bounded opener/classification fact (the complete first NDJSON record, or its derived family+cursor facts) OUTSIDE the data ring per broker-held inbound stream, held until stream close; recovery classifies from that metadata, never ring seq 0. Ring semantics and size untouched (enlarging the ring for a correctness fact is REJECTED). Gate: impl — the pinned opener fact + classification cutover; unit — classification survives full ring roll-over; int — production-path regression D2: push >4096 transport chunks on an active Attach (opener evicted), restart dispatcher, prove durable classification resumes the SAME operator stream. HEAVY nextest group at birth. Kin REQ-DISPATCH-CLAIM-RETRY, REQ-HAZARD-REDISPATCH-CONTROL-STEAL.",
2026-07-26T22:33:03.3169987Z       "requiredStages": [
2026-07-26T22:33:03.3170063Z         "impl",
2026-07-26T22:33:03.3170147Z         "unit",
2026-07-26T22:33:03.3170244Z         "int"
2026-07-26T22:33:03.3170325Z       ],
2026-07-26T22:33:03.3170425Z       "stages": {
2026-07-26T22:33:03.3170501Z         "doc": {
2026-07-26T22:33:03.3170602Z           "complete": false,
2026-07-26T22:33:03.3170696Z           "evidence": []
2026-07-26T22:33:03.3170796Z         },
2026-07-26T22:33:03.3170945Z         "impl": {
2026-07-26T22:33:03.3171045Z           "complete": true,
2026-07-26T22:33:03.3171130Z           "evidence": [
2026-07-26T22:33:03.3171222Z             {
2026-07-26T22:33:03.3171349Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:03.3171445Z               "line": 302
2026-07-26T22:33:03.3171523Z             },
2026-07-26T22:33:03.3171612Z             {
2026-07-26T22:33:03.3171727Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.3171818Z               "line": 1704
2026-07-26T22:33:03.3171899Z             },
2026-07-26T22:33:03.3171979Z             {
2026-07-26T22:33:03.3172088Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3172183Z               "line": 5859
2026-07-26T22:33:03.3172261Z             },
2026-07-26T22:33:03.3172336Z             {
2026-07-26T22:33:03.3172455Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.3172556Z               "line": 1005
2026-07-26T22:33:03.3172646Z             },
2026-07-26T22:33:03.3172731Z             {
2026-07-26T22:33:03.3172852Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.3173094Z               "line": 198
2026-07-26T22:33:03.3173166Z             },
2026-07-26T22:33:03.3173256Z             {
2026-07-26T22:33:03.3173375Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.3173514Z               "line": 929
2026-07-26T22:33:03.3173595Z             },
2026-07-26T22:33:03.3173685Z             {
2026-07-26T22:33:03.3173806Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3173899Z               "line": 445
2026-07-26T22:33:03.3173971Z             },
2026-07-26T22:33:03.3174058Z             {
2026-07-26T22:33:03.3174167Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3174266Z               "line": 2003
2026-07-26T22:33:03.3174346Z             }
2026-07-26T22:33:03.3174428Z           ]
2026-07-26T22:33:03.3174550Z         },
2026-07-26T22:33:03.3174635Z         "int": {
2026-07-26T22:33:03.3174736Z           "complete": true,
2026-07-26T22:33:03.3174818Z           "evidence": [
2026-07-26T22:33:03.3174912Z             {
2026-07-26T22:33:03.3175041Z               "path": "crates/spt-daemon/tests/redispatch.rs",
2026-07-26T22:33:03.3175136Z               "line": 488
2026-07-26T22:33:03.3175217Z             }
2026-07-26T22:33:03.3175298Z           ]
2026-07-26T22:33:03.3175380Z         },
2026-07-26T22:33:03.3175461Z         "unit": {
2026-07-26T22:33:03.3175546Z           "complete": true,
2026-07-26T22:33:03.3175637Z           "evidence": [
2026-07-26T22:33:03.3175709Z             {
2026-07-26T22:33:03.3175837Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3175918Z               "line": 2592
2026-07-26T22:33:03.3176000Z             },
2026-07-26T22:33:03.3176080Z             {
2026-07-26T22:33:03.3176199Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3176286Z               "line": 2617
2026-07-26T22:33:03.3176381Z             }
2026-07-26T22:33:03.3176466Z           ]
2026-07-26T22:33:03.3176547Z         }
2026-07-26T22:33:03.3176625Z       }
2026-07-26T22:33:03.3176710Z     },
2026-07-26T22:33:03.3176795Z     {
2026-07-26T22:33:03.3176911Z       "id": "REQ-STREAMLOG-SUBSCRIBER-DISCIPLINE",
2026-07-26T22:33:03.3181041Z       "title": "REDISPATCH-STALL W1 (ADR-0038 Amendment, fixes 2+3+4): StreamLog subscriber write discipline — (a) replay and live fan-out HALT at the first failed subscriber write and the failed subscriber is REMOVED, at ALL sites (attach replay, append, finish; PresenceLog mirrors ride the same change — today let _ = sub.write() discards errors and iteration continues, nethost.rs:322-346); (b) subscriber I/O moves OFF the StreamLog mutex: bounded per-subscriber writer queue, enqueue-under-lock / I/O-outside, overflow = detach + resume-from-cursor (the existing gapless-resume contract), never a producer stall; (c) attach worker completion + forwarding BOUNDED and cancelable — a poisoned brain subscriber cancels its paired serve/wire worker, no orphan forwarding legs (COORDINATE with DAEMON-LIFECYCLE C2 leases at build — same neighborhood, build once). Gate: impl — halt+remove all-sites + writer queue + cancelable pairing; unit — halt-at-first-failure removes the subscriber at each site + queue overflow detaches with cursor intact + producer append never blocks past enqueue; int — T1 (poisoned-replay halt) + T3 (producer latency flat under a wedged subscriber) + T4 (paired worker canceled on poison); doc — ADR-0038 Amendment. Kin REQ-HAZARD-REDISPATCH-STALL, REQ-CONN-POISON-ATTRIBUTION (the telemetry that caught it), REQ-EP-4 (PresenceLog contract unchanged above the write leaf).",
2026-07-26T22:33:03.3181209Z       "requiredStages": [
2026-07-26T22:33:03.3181309Z         "doc",
2026-07-26T22:33:03.3181429Z         "impl",
2026-07-26T22:33:03.3181519Z         "unit",
2026-07-26T22:33:03.3181600Z         "int"
2026-07-26T22:33:03.3181695Z       ],
2026-07-26T22:33:03.3181777Z       "stages": {
2026-07-26T22:33:03.3181862Z         "doc": {
2026-07-26T22:33:03.3181958Z           "complete": true,
2026-07-26T22:33:03.3182092Z           "evidence": [
2026-07-26T22:33:03.3182177Z             {
2026-07-26T22:33:03.3182374Z               "path": "docs/adr/0038-broker-stream-lifecycle-truth.md",
2026-07-26T22:33:03.3182464Z               "line": 75
2026-07-26T22:33:03.3182614Z             }
2026-07-26T22:33:03.3182700Z           ]
2026-07-26T22:33:03.3182787Z         },
2026-07-26T22:33:03.3182919Z         "impl": {
2026-07-26T22:33:03.3183015Z           "complete": true,
2026-07-26T22:33:03.3183111Z           "evidence": [
2026-07-26T22:33:03.3183192Z             {
2026-07-26T22:33:03.3183315Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3183407Z               "line": 132
2026-07-26T22:33:03.3183483Z             },
2026-07-26T22:33:03.3183558Z             {
2026-07-26T22:33:03.3183669Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3183816Z               "line": 153
2026-07-26T22:33:03.3183906Z             },
2026-07-26T22:33:03.3183989Z             {
2026-07-26T22:33:03.3184107Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3184188Z               "line": 188
2026-07-26T22:33:03.3184279Z             },
2026-07-26T22:33:03.3184356Z             {
2026-07-26T22:33:03.3184478Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3184565Z               "line": 287
2026-07-26T22:33:03.3184647Z             },
2026-07-26T22:33:03.3184723Z             {
2026-07-26T22:33:03.3184845Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3184936Z               "line": 478
2026-07-26T22:33:03.3185022Z             },
2026-07-26T22:33:03.3185096Z             {
2026-07-26T22:33:03.3185214Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3185291Z               "line": 489
2026-07-26T22:33:03.3185383Z             },
2026-07-26T22:33:03.3185467Z             {
2026-07-26T22:33:03.3185587Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3185663Z               "line": 525
2026-07-26T22:33:03.3185749Z             },
2026-07-26T22:33:03.3185829Z             {
2026-07-26T22:33:03.3185945Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3186035Z               "line": 544
2026-07-26T22:33:03.3186120Z             },
2026-07-26T22:33:03.3186207Z             {
2026-07-26T22:33:03.3186321Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3186425Z               "line": 594
2026-07-26T22:33:03.3186506Z             },
2026-07-26T22:33:03.3186598Z             {
2026-07-26T22:33:03.3186703Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3186798Z               "line": 717
2026-07-26T22:33:03.3186875Z             },
2026-07-26T22:33:03.3186956Z             {
2026-07-26T22:33:03.3187079Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3187228Z               "line": 732
2026-07-26T22:33:03.3187303Z             },
2026-07-26T22:33:03.3187384Z             {
2026-07-26T22:33:03.3187505Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3187609Z               "line": 1830
2026-07-26T22:33:03.3187693Z             },
2026-07-26T22:33:03.3187778Z             {
2026-07-26T22:33:03.3187903Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3188001Z               "line": 1854
2026-07-26T22:33:03.3188091Z             },
2026-07-26T22:33:03.3188182Z             {
2026-07-26T22:33:03.3188301Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3188396Z               "line": 2115
2026-07-26T22:33:03.3188473Z             },
2026-07-26T22:33:03.3188564Z             {
2026-07-26T22:33:03.3188682Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3188769Z               "line": 2168
2026-07-26T22:33:03.3188850Z             }
2026-07-26T22:33:03.3189040Z           ]
2026-07-26T22:33:03.3189132Z         },
2026-07-26T22:33:03.3189221Z         "int": {
2026-07-26T22:33:03.3189364Z           "complete": true,
2026-07-26T22:33:03.3189466Z           "evidence": [
2026-07-26T22:33:03.3189550Z             {
2026-07-26T22:33:03.3189718Z               "path": "crates/spt-daemon/tests/redispatch_stall.rs",
2026-07-26T22:33:03.3189870Z               "line": 310
2026-07-26T22:33:03.3189965Z             },
2026-07-26T22:33:03.3190047Z             {
2026-07-26T22:33:03.3190189Z               "path": "crates/spt-daemon/tests/redispatch_stall.rs",
2026-07-26T22:33:03.3190284Z               "line": 391
2026-07-26T22:33:03.3190374Z             }
2026-07-26T22:33:03.3190460Z           ]
2026-07-26T22:33:03.3190544Z         },
2026-07-26T22:33:03.3190629Z         "unit": {
2026-07-26T22:33:03.3190730Z           "complete": true,
2026-07-26T22:33:03.3190821Z           "evidence": [
2026-07-26T22:33:03.3190948Z             {
2026-07-26T22:33:03.3191069Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3191164Z               "line": 2798
2026-07-26T22:33:03.3191244Z             },
2026-07-26T22:33:03.3191326Z             {
2026-07-26T22:33:03.3191450Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3191540Z               "line": 2845
2026-07-26T22:33:03.3191631Z             },
2026-07-26T22:33:03.3191713Z             {
2026-07-26T22:33:03.3191836Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3191921Z               "line": 2870
2026-07-26T22:33:03.3192009Z             },
2026-07-26T22:33:03.3192094Z             {
2026-07-26T22:33:03.3192222Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3192304Z               "line": 2906
2026-07-26T22:33:03.3192399Z             },
2026-07-26T22:33:03.3192479Z             {
2026-07-26T22:33:03.3192600Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3192695Z               "line": 2953
2026-07-26T22:33:03.3192780Z             },
2026-07-26T22:33:03.3192866Z             {
2026-07-26T22:33:03.3192982Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3193066Z               "line": 2996
2026-07-26T22:33:03.3193155Z             },
2026-07-26T22:33:03.3193236Z             {
2026-07-26T22:33:03.3193352Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3193447Z               "line": 3048
2026-07-26T22:33:03.3193532Z             },
2026-07-26T22:33:03.3193619Z             {
2026-07-26T22:33:03.3193743Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3193827Z               "line": 3088
2026-07-26T22:33:03.3193920Z             }
2026-07-26T22:33:03.3193995Z           ]
2026-07-26T22:33:03.3194086Z         }
2026-07-26T22:33:03.3194166Z       }
2026-07-26T22:33:03.3194244Z     },
2026-07-26T22:33:03.3194329Z     {
2026-07-26T22:33:03.3194429Z       "id": "REQ-SUBNET-1",
2026-07-26T22:33:03.3194805Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-07-26T22:33:03.3194911Z       "requiredStages": [
2026-07-26T22:33:03.3194992Z         "impl",
2026-07-26T22:33:03.3195077Z         "unit"
2026-07-26T22:33:03.3195154Z       ],
2026-07-26T22:33:03.3195241Z       "stages": {
2026-07-26T22:33:03.3195335Z         "doc": {
2026-07-26T22:33:03.3195424Z           "complete": false,
2026-07-26T22:33:03.3195520Z           "evidence": []
2026-07-26T22:33:03.3195605Z         },
2026-07-26T22:33:03.3195689Z         "impl": {
2026-07-26T22:33:03.3195784Z           "complete": true,
2026-07-26T22:33:03.3195875Z           "evidence": [
2026-07-26T22:33:03.3195957Z             {
2026-07-26T22:33:03.3196099Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3196190Z               "line": 272
2026-07-26T22:33:03.3196281Z             },
2026-07-26T22:33:03.3196370Z             {
2026-07-26T22:33:03.3196510Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3196590Z               "line": 869
2026-07-26T22:33:03.3196718Z             },
2026-07-26T22:33:03.3196796Z             {
2026-07-26T22:33:03.3196910Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3196995Z               "line": 7744
2026-07-26T22:33:03.3197091Z             },
2026-07-26T22:33:03.3197206Z             {
2026-07-26T22:33:03.3197315Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3197411Z               "line": 8054
2026-07-26T22:33:03.3197507Z             },
2026-07-26T22:33:03.3197586Z             {
2026-07-26T22:33:03.3197697Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3197788Z               "line": 8110
2026-07-26T22:33:03.3197877Z             },
2026-07-26T22:33:03.3197958Z             {
2026-07-26T22:33:03.3198060Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3198155Z               "line": 8174
2026-07-26T22:33:03.3198287Z             },
2026-07-26T22:33:03.3198368Z             {
2026-07-26T22:33:03.3198468Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3198570Z               "line": 8216
2026-07-26T22:33:03.3198656Z             },
2026-07-26T22:33:03.3198737Z             {
2026-07-26T22:33:03.3198848Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3198932Z               "line": 8405
2026-07-26T22:33:03.3199096Z             },
2026-07-26T22:33:03.3199177Z             {
2026-07-26T22:33:03.3199281Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3199372Z               "line": 8488
2026-07-26T22:33:03.3199462Z             },
2026-07-26T22:33:03.3199547Z             {
2026-07-26T22:33:03.3199658Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3199749Z               "line": 8740
2026-07-26T22:33:03.3199834Z             },
2026-07-26T22:33:03.3199948Z             {
2026-07-26T22:33:03.3200073Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3200172Z               "line": 9621
2026-07-26T22:33:03.3200258Z             },
2026-07-26T22:33:03.3200355Z             {
2026-07-26T22:33:03.3200458Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.3200559Z               "line": 794
2026-07-26T22:33:03.3200651Z             }
2026-07-26T22:33:03.3200731Z           ]
2026-07-26T22:33:03.3200811Z         },
2026-07-26T22:33:03.3200910Z         "int": {
2026-07-26T22:33:03.3201001Z           "complete": false,
2026-07-26T22:33:03.3201099Z           "evidence": []
2026-07-26T22:33:03.3201180Z         },
2026-07-26T22:33:03.3201266Z         "unit": {
2026-07-26T22:33:03.3201348Z           "complete": true,
2026-07-26T22:33:03.3201437Z           "evidence": [
2026-07-26T22:33:03.3201527Z             {
2026-07-26T22:33:03.3201657Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3201743Z               "line": 2295
2026-07-26T22:33:03.3201824Z             },
2026-07-26T22:33:03.3201972Z             {
2026-07-26T22:33:03.3202077Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3202162Z               "line": 18045
2026-07-26T22:33:03.3202249Z             },
2026-07-26T22:33:03.3202329Z             {
2026-07-26T22:33:03.3202443Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3202530Z               "line": 18276
2026-07-26T22:33:03.3202606Z             },
2026-07-26T22:33:03.3202692Z             {
2026-07-26T22:33:03.3202796Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3202893Z               "line": 18283
2026-07-26T22:33:03.3202997Z             },
2026-07-26T22:33:03.3203092Z             {
2026-07-26T22:33:03.3203250Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3203330Z               "line": 18336
2026-07-26T22:33:03.3203431Z             },
2026-07-26T22:33:03.3203508Z             {
2026-07-26T22:33:03.3203617Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3203706Z               "line": 18353
2026-07-26T22:33:03.3203801Z             },
2026-07-26T22:33:03.3203888Z             {
2026-07-26T22:33:03.3203988Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3204130Z               "line": 18383
2026-07-26T22:33:03.3204212Z             },
2026-07-26T22:33:03.3204298Z             {
2026-07-26T22:33:03.3204402Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3204541Z               "line": 18505
2026-07-26T22:33:03.3204618Z             },
2026-07-26T22:33:03.3204712Z             {
2026-07-26T22:33:03.3204813Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3204908Z               "line": 18733
2026-07-26T22:33:03.3204984Z             }
2026-07-26T22:33:03.3205070Z           ]
2026-07-26T22:33:03.3205157Z         }
2026-07-26T22:33:03.3205242Z       }
2026-07-26T22:33:03.3205323Z     },
2026-07-26T22:33:03.3205399Z     {
2026-07-26T22:33:03.3205495Z       "id": "REQ-SUBNET-2",
2026-07-26T22:33:03.3205733Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-07-26T22:33:03.3205885Z       "requiredStages": [
2026-07-26T22:33:03.3205980Z         "impl",
2026-07-26T22:33:03.3206061Z         "unit",
2026-07-26T22:33:03.3206151Z         "int"
2026-07-26T22:33:03.3206226Z       ],
2026-07-26T22:33:03.3206320Z       "stages": {
2026-07-26T22:33:03.3206407Z         "doc": {
2026-07-26T22:33:03.3206508Z           "complete": true,
2026-07-26T22:33:03.3206601Z           "evidence": [
2026-07-26T22:33:03.3206692Z             {
2026-07-26T22:33:03.3206860Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-07-26T22:33:03.3206954Z               "line": 60
2026-07-26T22:33:03.3207041Z             }
2026-07-26T22:33:03.3207122Z           ]
2026-07-26T22:33:03.3207203Z         },
2026-07-26T22:33:03.3207298Z         "impl": {
2026-07-26T22:33:03.3207399Z           "complete": true,
2026-07-26T22:33:03.3207494Z           "evidence": [
2026-07-26T22:33:03.3211375Z             {
2026-07-26T22:33:03.3211547Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.3211655Z               "line": 1373
2026-07-26T22:33:03.3211759Z             },
2026-07-26T22:33:03.3211840Z             {
2026-07-26T22:33:03.3211979Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3212074Z               "line": 5508
2026-07-26T22:33:03.3212160Z             },
2026-07-26T22:33:03.3212241Z             {
2026-07-26T22:33:03.3212374Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3212465Z               "line": 1231
2026-07-26T22:33:03.3212556Z             },
2026-07-26T22:33:03.3212637Z             {
2026-07-26T22:33:03.3212766Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-07-26T22:33:03.3212847Z               "line": 1433
2026-07-26T22:33:03.3212932Z             },
2026-07-26T22:33:03.3213023Z             {
2026-07-26T22:33:03.3213153Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.3213242Z               "line": 26
2026-07-26T22:33:03.3213444Z             },
2026-07-26T22:33:03.3213533Z             {
2026-07-26T22:33:03.3213652Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.3213739Z               "line": 60
2026-07-26T22:33:03.3213820Z             },
2026-07-26T22:33:03.3213904Z             {
2026-07-26T22:33:03.3214015Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.3214112Z               "line": 168
2026-07-26T22:33:03.3214195Z             },
2026-07-26T22:33:03.3214276Z             {
2026-07-26T22:33:03.3214395Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.3214492Z               "line": 295
2026-07-26T22:33:03.3214576Z             },
2026-07-26T22:33:03.3214662Z             {
2026-07-26T22:33:03.3214777Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.3214877Z               "line": 417
2026-07-26T22:33:03.3214957Z             },
2026-07-26T22:33:03.3215035Z             {
2026-07-26T22:33:03.3215158Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-07-26T22:33:03.3215258Z               "line": 252
2026-07-26T22:33:03.3215420Z             },
2026-07-26T22:33:03.3215501Z             {
2026-07-26T22:33:03.3215606Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3215698Z               "line": 8137
2026-07-26T22:33:03.3215830Z             },
2026-07-26T22:33:03.3215916Z             {
2026-07-26T22:33:03.3216018Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3216112Z               "line": 8651
2026-07-26T22:33:03.3216188Z             },
2026-07-26T22:33:03.3216274Z             {
2026-07-26T22:33:03.3216375Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3216469Z               "line": 9451
2026-07-26T22:33:03.3216544Z             }
2026-07-26T22:33:03.3216635Z           ]
2026-07-26T22:33:03.3216716Z         },
2026-07-26T22:33:03.3216800Z         "int": {
2026-07-26T22:33:03.3216948Z           "complete": true,
2026-07-26T22:33:03.3217048Z           "evidence": [
2026-07-26T22:33:03.3217129Z             {
2026-07-26T22:33:03.3217267Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-07-26T22:33:03.3217359Z               "line": 22
2026-07-26T22:33:03.3217448Z             },
2026-07-26T22:33:03.3217529Z             {
2026-07-26T22:33:03.3217659Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.3217749Z               "line": 702
2026-07-26T22:33:03.3217838Z             },
2026-07-26T22:33:03.3217917Z             {
2026-07-26T22:33:03.3218026Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.3218125Z               "line": 1039
2026-07-26T22:33:03.3218206Z             }
2026-07-26T22:33:03.3218288Z           ]
2026-07-26T22:33:03.3218364Z         },
2026-07-26T22:33:03.3218459Z         "unit": {
2026-07-26T22:33:03.3218546Z           "complete": true,
2026-07-26T22:33:03.3218641Z           "evidence": [
2026-07-26T22:33:03.3218726Z             {
2026-07-26T22:33:03.3218856Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.3219035Z               "line": 792
2026-07-26T22:33:03.3219122Z             },
2026-07-26T22:33:03.3219209Z             {
2026-07-26T22:33:03.3219322Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3219402Z               "line": 18085
2026-07-26T22:33:03.3219488Z             },
2026-07-26T22:33:03.3219574Z             {
2026-07-26T22:33:03.3219686Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3219771Z               "line": 19287
2026-07-26T22:33:03.3219857Z             }
2026-07-26T22:33:03.3219939Z           ]
2026-07-26T22:33:03.3220033Z         }
2026-07-26T22:33:03.3220110Z       }
2026-07-26T22:33:03.3220197Z     },
2026-07-26T22:33:03.3220273Z     {
2026-07-26T22:33:03.3220372Z       "id": "REQ-SUBNET-3",
2026-07-26T22:33:03.3220649Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-07-26T22:33:03.3220817Z       "requiredStages": [
2026-07-26T22:33:03.3220902Z         "impl",
2026-07-26T22:33:03.3220997Z         "unit"
2026-07-26T22:33:03.3221078Z       ],
2026-07-26T22:33:03.3221174Z       "stages": {
2026-07-26T22:33:03.3221254Z         "doc": {
2026-07-26T22:33:03.3221360Z           "complete": false,
2026-07-26T22:33:03.3221446Z           "evidence": []
2026-07-26T22:33:03.3221523Z         },
2026-07-26T22:33:03.3221597Z         "impl": {
2026-07-26T22:33:03.3221699Z           "complete": true,
2026-07-26T22:33:03.3221785Z           "evidence": [
2026-07-26T22:33:03.3221861Z             {
2026-07-26T22:33:03.3221983Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3222083Z               "line": 173
2026-07-26T22:33:03.3222159Z             },
2026-07-26T22:33:03.3222243Z             {
2026-07-26T22:33:03.3222362Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3222449Z               "line": 387
2026-07-26T22:33:03.3222530Z             },
2026-07-26T22:33:03.3222619Z             {
2026-07-26T22:33:03.3222740Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3222891Z               "line": 601
2026-07-26T22:33:03.3222977Z             },
2026-07-26T22:33:03.3223088Z             {
2026-07-26T22:33:03.3223215Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3223355Z               "line": 712
2026-07-26T22:33:03.3223435Z             },
2026-07-26T22:33:03.3223516Z             {
2026-07-26T22:33:03.3223640Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3223727Z               "line": 125
2026-07-26T22:33:03.3223807Z             },
2026-07-26T22:33:03.3223888Z             {
2026-07-26T22:33:03.3224008Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3224093Z               "line": 413
2026-07-26T22:33:03.3224174Z             },
2026-07-26T22:33:03.3224251Z             {
2026-07-26T22:33:03.3224422Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3224503Z               "line": 424
2026-07-26T22:33:03.3224595Z             },
2026-07-26T22:33:03.3224681Z             {
2026-07-26T22:33:03.3224807Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3224892Z               "line": 445
2026-07-26T22:33:03.3224984Z             },
2026-07-26T22:33:03.3225057Z             {
2026-07-26T22:33:03.3225179Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3225270Z               "line": 842
2026-07-26T22:33:03.3225370Z             },
2026-07-26T22:33:03.3225446Z             {
2026-07-26T22:33:03.3225566Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3225647Z               "line": 911
2026-07-26T22:33:03.3225747Z             },
2026-07-26T22:33:03.3225828Z             {
2026-07-26T22:33:03.3225953Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-07-26T22:33:03.3226038Z               "line": 61
2026-07-26T22:33:03.3226118Z             },
2026-07-26T22:33:03.3226200Z             {
2026-07-26T22:33:03.3226324Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-07-26T22:33:03.3226410Z               "line": 90
2026-07-26T22:33:03.3226495Z             },
2026-07-26T22:33:03.3226573Z             {
2026-07-26T22:33:03.3226695Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-07-26T22:33:03.3226791Z               "line": 130
2026-07-26T22:33:03.3226863Z             },
2026-07-26T22:33:03.3226953Z             {
2026-07-26T22:33:03.3227071Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-07-26T22:33:03.3227162Z               "line": 9
2026-07-26T22:33:03.3227243Z             },
2026-07-26T22:33:03.3227327Z             {
2026-07-26T22:33:03.3227426Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3227522Z               "line": 8488
2026-07-26T22:33:03.3227609Z             },
2026-07-26T22:33:03.3227694Z             {
2026-07-26T22:33:03.3227847Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.3227947Z               "line": 821
2026-07-26T22:33:03.3228032Z             }
2026-07-26T22:33:03.3228118Z           ]
2026-07-26T22:33:03.3228200Z         },
2026-07-26T22:33:03.3228290Z         "int": {
2026-07-26T22:33:03.3228380Z           "complete": false,
2026-07-26T22:33:03.3228482Z           "evidence": []
2026-07-26T22:33:03.3228567Z         },
2026-07-26T22:33:03.3228657Z         "unit": {
2026-07-26T22:33:03.3228747Z           "complete": true,
2026-07-26T22:33:03.3228829Z           "evidence": [
2026-07-26T22:33:03.3228910Z             {
2026-07-26T22:33:03.3229111Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3229196Z               "line": 1858
2026-07-26T22:33:03.3229276Z             },
2026-07-26T22:33:03.3229357Z             {
2026-07-26T22:33:03.3229487Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3229567Z               "line": 2470
2026-07-26T22:33:03.3229682Z             },
2026-07-26T22:33:03.3229760Z             {
2026-07-26T22:33:03.3229891Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-07-26T22:33:03.3230029Z               "line": 1054
2026-07-26T22:33:03.3230114Z             },
2026-07-26T22:33:03.3230194Z             {
2026-07-26T22:33:03.3230312Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3230447Z               "line": 1593
2026-07-26T22:33:03.3230528Z             },
2026-07-26T22:33:03.3230608Z             {
2026-07-26T22:33:03.3230733Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3230818Z               "line": 1649
2026-07-26T22:33:03.3230909Z             },
2026-07-26T22:33:03.3230994Z             {
2026-07-26T22:33:03.3231114Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3231205Z               "line": 1708
2026-07-26T22:33:03.3231280Z             },
2026-07-26T22:33:03.3231410Z             {
2026-07-26T22:33:03.3231534Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-07-26T22:33:03.3231629Z               "line": 245
2026-07-26T22:33:03.3231711Z             },
2026-07-26T22:33:03.3231796Z             {
2026-07-26T22:33:03.3231915Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-07-26T22:33:03.3231997Z               "line": 67
2026-07-26T22:33:03.3232078Z             },
2026-07-26T22:33:03.3232172Z             {
2026-07-26T22:33:03.3232273Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3232364Z               "line": 18505
2026-07-26T22:33:03.3232444Z             },
2026-07-26T22:33:03.3232524Z             {
2026-07-26T22:33:03.3232620Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3232715Z               "line": 18688
2026-07-26T22:33:03.3232794Z             },
2026-07-26T22:33:03.3232874Z             {
2026-07-26T22:33:03.3232970Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3233067Z               "line": 19253
2026-07-26T22:33:03.3233151Z             }
2026-07-26T22:33:03.3233237Z           ]
2026-07-26T22:33:03.3233314Z         }
2026-07-26T22:33:03.3233395Z       }
2026-07-26T22:33:03.3233475Z     },
2026-07-26T22:33:03.3233556Z     {
2026-07-26T22:33:03.3233648Z       "id": "REQ-SUBNET-4",
2026-07-26T22:33:03.3233939Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-07-26T22:33:03.3234038Z       "requiredStages": [
2026-07-26T22:33:03.3234123Z         "impl",
2026-07-26T22:33:03.3234205Z         "unit"
2026-07-26T22:33:03.3234287Z       ],
2026-07-26T22:33:03.3234372Z       "stages": {
2026-07-26T22:33:03.3234448Z         "doc": {
2026-07-26T22:33:03.3234530Z           "complete": true,
2026-07-26T22:33:03.3234626Z           "evidence": [
2026-07-26T22:33:03.3234705Z             {
2026-07-26T22:33:03.3234874Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-07-26T22:33:03.3234959Z               "line": 60
2026-07-26T22:33:03.3235106Z             }
2026-07-26T22:33:03.3235189Z           ]
2026-07-26T22:33:03.3235279Z         },
2026-07-26T22:33:03.3235363Z         "impl": {
2026-07-26T22:33:03.3235448Z           "complete": true,
2026-07-26T22:33:03.3235525Z           "evidence": [
2026-07-26T22:33:03.3235617Z             {
2026-07-26T22:33:03.3235710Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3235796Z               "line": 7744
2026-07-26T22:33:03.3235879Z             },
2026-07-26T22:33:03.3235960Z             {
2026-07-26T22:33:03.3236068Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3236155Z               "line": 9357
2026-07-26T22:33:03.3236245Z             },
2026-07-26T22:33:03.3236326Z             {
2026-07-26T22:33:03.3236421Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3236513Z               "line": 9451
2026-07-26T22:33:03.3236598Z             }
2026-07-26T22:33:03.3236673Z           ]
2026-07-26T22:33:03.3236755Z         },
2026-07-26T22:33:03.3236837Z         "int": {
2026-07-26T22:33:03.3236931Z           "complete": false,
2026-07-26T22:33:03.3237065Z           "evidence": []
2026-07-26T22:33:03.3237143Z         },
2026-07-26T22:33:03.3237227Z         "unit": {
2026-07-26T22:33:03.3237322Z           "complete": true,
2026-07-26T22:33:03.3237404Z           "evidence": [
2026-07-26T22:33:03.3237500Z             {
2026-07-26T22:33:03.3237622Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3237717Z               "line": 18208
2026-07-26T22:33:03.3237794Z             },
2026-07-26T22:33:03.3237873Z             {
2026-07-26T22:33:03.3237977Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3238063Z               "line": 18336
2026-07-26T22:33:03.3238145Z             }
2026-07-26T22:33:03.3238230Z           ]
2026-07-26T22:33:03.3238310Z         }
2026-07-26T22:33:03.3238397Z       }
2026-07-26T22:33:03.3238479Z     },
2026-07-26T22:33:03.3238554Z     {
2026-07-26T22:33:03.3238692Z       "id": "REQ-SUBNET-5",
2026-07-26T22:33:03.3239981Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-07-26T22:33:03.3240090Z       "requiredStages": [
2026-07-26T22:33:03.3240170Z         "impl",
2026-07-26T22:33:03.3240257Z         "unit",
2026-07-26T22:33:03.3240334Z         "int"
2026-07-26T22:33:03.3240405Z       ],
2026-07-26T22:33:03.3240494Z       "stages": {
2026-07-26T22:33:03.3240570Z         "doc": {
2026-07-26T22:33:03.3240666Z           "complete": false,
2026-07-26T22:33:03.3240759Z           "evidence": []
2026-07-26T22:33:03.3240839Z         },
2026-07-26T22:33:03.3240930Z         "impl": {
2026-07-26T22:33:03.3241017Z           "complete": true,
2026-07-26T22:33:03.3241116Z           "evidence": [
2026-07-26T22:33:03.3241192Z             {
2026-07-26T22:33:03.3241327Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-07-26T22:33:03.3241417Z               "line": 142
2026-07-26T22:33:03.3241506Z             },
2026-07-26T22:33:03.3241584Z             {
2026-07-26T22:33:03.3241708Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-07-26T22:33:03.3241798Z               "line": 1089
2026-07-26T22:33:03.3241874Z             },
2026-07-26T22:33:03.3241956Z             {
2026-07-26T22:33:03.3242075Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.3242170Z               "line": 74
2026-07-26T22:33:03.3242252Z             },
2026-07-26T22:33:03.3242332Z             {
2026-07-26T22:33:03.3242451Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.3242538Z               "line": 431
2026-07-26T22:33:03.3242614Z             },
2026-07-26T22:33:03.3242689Z             {
2026-07-26T22:33:03.3242882Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.3242967Z               "line": 996
2026-07-26T22:33:03.3243084Z             },
2026-07-26T22:33:03.3243184Z             {
2026-07-26T22:33:03.3243321Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-07-26T22:33:03.3243410Z               "line": 31
2026-07-26T22:33:03.3243492Z             },
2026-07-26T22:33:03.3243574Z             {
2026-07-26T22:33:03.3243702Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-07-26T22:33:03.3243787Z               "line": 50
2026-07-26T22:33:03.3243870Z             },
2026-07-26T22:33:03.3243945Z             {
2026-07-26T22:33:03.3244073Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-07-26T22:33:03.3244156Z               "line": 69
2026-07-26T22:33:03.3244237Z             },
2026-07-26T22:33:03.3244318Z             {
2026-07-26T22:33:03.3244446Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-07-26T22:33:03.3244528Z               "line": 113
2026-07-26T22:33:03.3244617Z             },
2026-07-26T22:33:03.3244698Z             {
2026-07-26T22:33:03.3244875Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-07-26T22:33:03.3244961Z               "line": 25
2026-07-26T22:33:03.3245037Z             },
2026-07-26T22:33:03.3245119Z             {
2026-07-26T22:33:03.3245242Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-07-26T22:33:03.3245390Z               "line": 34
2026-07-26T22:33:03.3245477Z             },
2026-07-26T22:33:03.3245557Z             {
2026-07-26T22:33:03.3245671Z               "path": "crates/spt-store/src/attachment.rs",
2026-07-26T22:33:03.3245754Z               "line": 17
2026-07-26T22:33:03.3245834Z             },
2026-07-26T22:33:03.3245918Z             {
2026-07-26T22:33:03.3246022Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3246114Z               "line": 9315
2026-07-26T22:33:03.3246191Z             },
2026-07-26T22:33:03.3246333Z             {
2026-07-26T22:33:03.3246434Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.3246520Z               "line": 795
2026-07-26T22:33:03.3246599Z             }
2026-07-26T22:33:03.3246681Z           ]
2026-07-26T22:33:03.3246768Z         },
2026-07-26T22:33:03.3246854Z         "int": {
2026-07-26T22:33:03.3246938Z           "complete": true,
2026-07-26T22:33:03.3247034Z           "evidence": [
2026-07-26T22:33:03.3247115Z             {
2026-07-26T22:33:03.3247243Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-07-26T22:33:03.3247325Z               "line": 983
2026-07-26T22:33:03.3247407Z             }
2026-07-26T22:33:03.3247491Z           ]
2026-07-26T22:33:03.3247572Z         },
2026-07-26T22:33:03.3247655Z         "unit": {
2026-07-26T22:33:03.3247754Z           "complete": true,
2026-07-26T22:33:03.3247834Z           "evidence": [
2026-07-26T22:33:03.3247926Z             {
2026-07-26T22:33:03.3248037Z               "path": "crates/spt-daemon/src/config.rs",
2026-07-26T22:33:03.3248130Z               "line": 428
2026-07-26T22:33:03.3248215Z             },
2026-07-26T22:33:03.3248306Z             {
2026-07-26T22:33:03.3248424Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-07-26T22:33:03.3248518Z               "line": 1567
2026-07-26T22:33:03.3248604Z             },
2026-07-26T22:33:03.3248690Z             {
2026-07-26T22:33:03.3248804Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-07-26T22:33:03.3248899Z               "line": 151
2026-07-26T22:33:03.3249062Z             },
2026-07-26T22:33:03.3249157Z             {
2026-07-26T22:33:03.3249277Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-07-26T22:33:03.3249367Z               "line": 61
2026-07-26T22:33:03.3249447Z             },
2026-07-26T22:33:03.3249524Z             {
2026-07-26T22:33:03.3249649Z               "path": "crates/spt-store/src/attachment.rs",
2026-07-26T22:33:03.3249730Z               "line": 111
2026-07-26T22:33:03.3249824Z             },
2026-07-26T22:33:03.3249964Z             {
2026-07-26T22:33:03.3250082Z               "path": "crates/spt-store/src/attachment.rs",
2026-07-26T22:33:03.3250177Z               "line": 138
2026-07-26T22:33:03.3250260Z             },
2026-07-26T22:33:03.3250335Z             {
2026-07-26T22:33:03.3250454Z               "path": "crates/spt-store/src/attachment.rs",
2026-07-26T22:33:03.3250541Z               "line": 148
2026-07-26T22:33:03.3250631Z             },
2026-07-26T22:33:03.3250711Z             {
2026-07-26T22:33:03.3250827Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3250918Z               "line": 18109
2026-07-26T22:33:03.3251002Z             }
2026-07-26T22:33:03.3251082Z           ]
2026-07-26T22:33:03.3251163Z         }
2026-07-26T22:33:03.3251240Z       }
2026-07-26T22:33:03.3251328Z     },
2026-07-26T22:33:03.3251404Z     {
2026-07-26T22:33:03.3251495Z       "id": "REQ-SUBNET-6",
2026-07-26T22:33:03.3252178Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-07-26T22:33:03.3252329Z       "requiredStages": [
2026-07-26T22:33:03.3252415Z         "impl",
2026-07-26T22:33:03.3252497Z         "unit"
2026-07-26T22:33:03.3252582Z       ],
2026-07-26T22:33:03.3252720Z       "stages": {
2026-07-26T22:33:03.3252798Z         "doc": {
2026-07-26T22:33:03.3252897Z           "complete": false,
2026-07-26T22:33:03.3252987Z           "evidence": []
2026-07-26T22:33:03.3253074Z         },
2026-07-26T22:33:03.3253155Z         "impl": {
2026-07-26T22:33:03.3253254Z           "complete": true,
2026-07-26T22:33:03.3253350Z           "evidence": [
2026-07-26T22:33:03.3253456Z             {
2026-07-26T22:33:03.3253574Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3253663Z               "line": 414
2026-07-26T22:33:03.3253801Z             },
2026-07-26T22:33:03.3253886Z             {
2026-07-26T22:33:03.3253999Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3254091Z               "line": 8973
2026-07-26T22:33:03.3254177Z             },
2026-07-26T22:33:03.3254262Z             {
2026-07-26T22:33:03.3254366Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3254454Z               "line": 8990
2026-07-26T22:33:03.3254539Z             },
2026-07-26T22:33:03.3254614Z             {
2026-07-26T22:33:03.3254725Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3254811Z               "line": 9043
2026-07-26T22:33:03.3254892Z             },
2026-07-26T22:33:03.3254977Z             {
2026-07-26T22:33:03.3255073Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3255154Z               "line": 9066
2026-07-26T22:33:03.3255239Z             }
2026-07-26T22:33:03.3255320Z           ]
2026-07-26T22:33:03.3255398Z         },
2026-07-26T22:33:03.3255478Z         "int": {
2026-07-26T22:33:03.3255577Z           "complete": false,
2026-07-26T22:33:03.3255660Z           "evidence": []
2026-07-26T22:33:03.3255755Z         },
2026-07-26T22:33:03.3255840Z         "unit": {
2026-07-26T22:33:03.3255926Z           "complete": true,
2026-07-26T22:33:03.3256013Z           "evidence": [
2026-07-26T22:33:03.3256093Z             {
2026-07-26T22:33:03.3256198Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3256295Z               "line": 18123
2026-07-26T22:33:03.3256376Z             },
2026-07-26T22:33:03.3256455Z             {
2026-07-26T22:33:03.3256554Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3256645Z               "line": 18156
2026-07-26T22:33:03.3256727Z             },
2026-07-26T22:33:03.3256807Z             {
2026-07-26T22:33:03.3256907Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3257004Z               "line": 18165
2026-07-26T22:33:03.3257075Z             }
2026-07-26T22:33:03.3257159Z           ]
2026-07-26T22:33:03.3257236Z         }
2026-07-26T22:33:03.3257365Z       }
2026-07-26T22:33:03.3257451Z     },
2026-07-26T22:33:03.3257537Z     {
2026-07-26T22:33:03.3257628Z       "id": "REQ-SUBNET-7",
2026-07-26T22:33:03.3259341Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-07-26T22:33:03.3259445Z       "requiredStages": [
2026-07-26T22:33:03.3259522Z         "impl",
2026-07-26T22:33:03.3259613Z         "unit"
2026-07-26T22:33:03.3259693Z       ],
2026-07-26T22:33:03.3259774Z       "stages": {
2026-07-26T22:33:03.3259852Z         "doc": {
2026-07-26T22:33:03.3259946Z           "complete": false,
2026-07-26T22:33:03.3260036Z           "evidence": []
2026-07-26T22:33:03.3260123Z         },
2026-07-26T22:33:03.3260280Z         "impl": {
2026-07-26T22:33:03.3260375Z           "complete": true,
2026-07-26T22:33:03.3260519Z           "evidence": [
2026-07-26T22:33:03.3260609Z             {
2026-07-26T22:33:03.3260728Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-07-26T22:33:03.3260881Z               "line": 17
2026-07-26T22:33:03.3260957Z             },
2026-07-26T22:33:03.3261043Z             {
2026-07-26T22:33:03.3261159Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.3261257Z               "line": 103
2026-07-26T22:33:03.3261339Z             },
2026-07-26T22:33:03.3261416Z             {
2026-07-26T22:33:03.3261534Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-07-26T22:33:03.3261629Z               "line": 312
2026-07-26T22:33:03.3261704Z             },
2026-07-26T22:33:03.3261851Z             {
2026-07-26T22:33:03.3261969Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-07-26T22:33:03.3262060Z               "line": 131
2026-07-26T22:33:03.3262142Z             },
2026-07-26T22:33:03.3262222Z             {
2026-07-26T22:33:03.3262336Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3262419Z               "line": 181
2026-07-26T22:33:03.3262514Z             },
2026-07-26T22:33:03.3262650Z             {
2026-07-26T22:33:03.3262833Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3262970Z               "line": 605
2026-07-26T22:33:03.3263081Z             },
2026-07-26T22:33:03.3263195Z             {
2026-07-26T22:33:03.3263434Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3263557Z               "line": 888
2026-07-26T22:33:03.3263682Z             },
2026-07-26T22:33:03.3263819Z             {
2026-07-26T22:33:03.3264017Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3264124Z               "line": 1043
2026-07-26T22:33:03.3264214Z             },
2026-07-26T22:33:03.3264295Z             {
2026-07-26T22:33:03.3264423Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3264503Z               "line": 1099
2026-07-26T22:33:03.3264583Z             },
2026-07-26T22:33:03.3264665Z             {
2026-07-26T22:33:03.3264794Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-07-26T22:33:03.3264879Z               "line": 136
2026-07-26T22:33:03.3264956Z             },
2026-07-26T22:33:03.3265038Z             {
2026-07-26T22:33:03.3265146Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3265222Z               "line": 139
2026-07-26T22:33:03.3265300Z             }
2026-07-26T22:33:03.3265376Z           ]
2026-07-26T22:33:03.3265461Z         },
2026-07-26T22:33:03.3265532Z         "int": {
2026-07-26T22:33:03.3265624Z           "complete": false,
2026-07-26T22:33:03.3265799Z           "evidence": []
2026-07-26T22:33:03.3265881Z         },
2026-07-26T22:33:03.3265963Z         "unit": {
2026-07-26T22:33:03.3266062Z           "complete": true,
2026-07-26T22:33:03.3266143Z           "evidence": [
2026-07-26T22:33:03.3266220Z             {
2026-07-26T22:33:03.3266320Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-07-26T22:33:03.3266400Z               "line": 140
2026-07-26T22:33:03.3266481Z             },
2026-07-26T22:33:03.3266564Z             {
2026-07-26T22:33:03.3266677Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-07-26T22:33:03.3266768Z               "line": 160
2026-07-26T22:33:03.3266845Z             },
2026-07-26T22:33:03.3266936Z             {
2026-07-26T22:33:03.3267043Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3267133Z               "line": 1483
2026-07-26T22:33:03.3267219Z             },
2026-07-26T22:33:03.3267297Z             {
2026-07-26T22:33:03.3267414Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3267491Z               "line": 1505
2026-07-26T22:33:03.3267569Z             },
2026-07-26T22:33:03.3267692Z             {
2026-07-26T22:33:03.3267811Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-07-26T22:33:03.3267893Z               "line": 1419
2026-07-26T22:33:03.3267974Z             },
2026-07-26T22:33:03.3268058Z             {
2026-07-26T22:33:03.3268217Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3268302Z               "line": 1644
2026-07-26T22:33:03.3268387Z             }
2026-07-26T22:33:03.3268470Z           ]
2026-07-26T22:33:03.3268551Z         }
2026-07-26T22:33:03.3268631Z       }
2026-07-26T22:33:03.3268716Z     },
2026-07-26T22:33:03.3268799Z     {
2026-07-26T22:33:03.3268894Z       "id": "REQ-SUBNET-8",
2026-07-26T22:33:03.3270087Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-07-26T22:33:03.3270262Z       "requiredStages": [
2026-07-26T22:33:03.3270334Z         "impl",
2026-07-26T22:33:03.3270421Z         "unit"
2026-07-26T22:33:03.3270502Z       ],
2026-07-26T22:33:03.3270587Z       "stages": {
2026-07-26T22:33:03.3270668Z         "doc": {
2026-07-26T22:33:03.3270770Z           "complete": false,
2026-07-26T22:33:03.3270850Z           "evidence": []
2026-07-26T22:33:03.3270930Z         },
2026-07-26T22:33:03.3271012Z         "impl": {
2026-07-26T22:33:03.3271108Z           "complete": true,
2026-07-26T22:33:03.3271193Z           "evidence": [
2026-07-26T22:33:03.3271274Z             {
2026-07-26T22:33:03.3271380Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3271474Z               "line": 8217
2026-07-26T22:33:03.3271555Z             },
2026-07-26T22:33:03.3271675Z             {
2026-07-26T22:33:03.3271822Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3271923Z               "line": 8246
2026-07-26T22:33:03.3272000Z             },
2026-07-26T22:33:03.3272076Z             {
2026-07-26T22:33:03.3272169Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3272254Z               "line": 8263
2026-07-26T22:33:03.3272336Z             },
2026-07-26T22:33:03.3272416Z             {
2026-07-26T22:33:03.3272515Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3272601Z               "line": 8286
2026-07-26T22:33:03.3272687Z             },
2026-07-26T22:33:03.3272768Z             {
2026-07-26T22:33:03.3272872Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3272959Z               "line": 8741
2026-07-26T22:33:03.3273049Z             }
2026-07-26T22:33:03.3273149Z           ]
2026-07-26T22:33:03.3273225Z         },
2026-07-26T22:33:03.3273308Z         "int": {
2026-07-26T22:33:03.3273463Z           "complete": false,
2026-07-26T22:33:03.3273550Z           "evidence": []
2026-07-26T22:33:03.3273641Z         },
2026-07-26T22:33:03.3273721Z         "unit": {
2026-07-26T22:33:03.3273822Z           "complete": true,
2026-07-26T22:33:03.3273898Z           "evidence": [
2026-07-26T22:33:03.3273979Z             {
2026-07-26T22:33:03.3274079Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3274174Z               "line": 18367
2026-07-26T22:33:03.3274252Z             },
2026-07-26T22:33:03.3274337Z             {
2026-07-26T22:33:03.3274432Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3274514Z               "line": 18383
2026-07-26T22:33:03.3274595Z             }
2026-07-26T22:33:03.3274675Z           ]
2026-07-26T22:33:03.3274755Z         }
2026-07-26T22:33:03.3274836Z       }
2026-07-26T22:33:03.3274917Z     },
2026-07-26T22:33:03.3274997Z     {
2026-07-26T22:33:03.3275096Z       "id": "REQ-SUBNET-COUNT-ROUTABLE",
2026-07-26T22:33:03.3276814Z       "title": "Bug #2: a remote node endpoint count drifts (0/2, 1/3) because node_status_rows (cli.rs:5314) increments the per-node total unconditionally, counting non-routable Offline ghost rows; purge is not a registry eviction (it gossips a one-shot Offline row that is immortal on remote viewers — eviction is per whole-node only). Fix: routable-only denominator (total += status.routable()) keeping a separate raw count for the all-Offline liveness branch; plus per-row Offline-TTL eviction so purged endpoints stop accumulating on remote snapshots. See docs/NEXT-MILESTONE-BUG-TRIAGE.md #2.",
2026-07-26T22:33:03.3277018Z       "requiredStages": [
2026-07-26T22:33:03.3277100Z         "impl",
2026-07-26T22:33:03.3277176Z         "unit"
2026-07-26T22:33:03.3277251Z       ],
2026-07-26T22:33:03.3277342Z       "stages": {
2026-07-26T22:33:03.3277419Z         "doc": {
2026-07-26T22:33:03.3277514Z           "complete": false,
2026-07-26T22:33:03.3277604Z           "evidence": []
2026-07-26T22:33:03.3277727Z         },
2026-07-26T22:33:03.3277809Z         "impl": {
2026-07-26T22:33:03.3277899Z           "complete": true,
2026-07-26T22:33:03.3277984Z           "evidence": [
2026-07-26T22:33:03.3278066Z             {
2026-07-26T22:33:03.3278162Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3278252Z               "line": 8441
2026-07-26T22:33:03.3278332Z             }
2026-07-26T22:33:03.3278414Z           ]
2026-07-26T22:33:03.3278491Z         },
2026-07-26T22:33:03.3278576Z         "int": {
2026-07-26T22:33:03.3278657Z           "complete": false,
2026-07-26T22:33:03.3278748Z           "evidence": []
2026-07-26T22:33:03.3278829Z         },
2026-07-26T22:33:03.3278919Z         "unit": {
2026-07-26T22:33:03.3279082Z           "complete": true,
2026-07-26T22:33:03.3279172Z           "evidence": [
2026-07-26T22:33:03.3279257Z             {
2026-07-26T22:33:03.3279364Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3279449Z               "line": 18617
2026-07-26T22:33:03.3279534Z             }
2026-07-26T22:33:03.3279616Z           ]
2026-07-26T22:33:03.3279698Z         }
2026-07-26T22:33:03.3279778Z       }
2026-07-26T22:33:03.3279862Z     },
2026-07-26T22:33:03.3279938Z     {
2026-07-26T22:33:03.3280053Z       "id": "REQ-SUBNET-DISPLAY-PARITY",
2026-07-26T22:33:03.3284306Z       "title": "The `spt endpoint run` picker renders endpoint state IDENTICALLY for local and remote (subnet) rows — bound/unbound, controlled (+driver node), and harness-only are all visible across the subnet, not local-only. Today data.rs:293-294 reduces a remote row to plain green-filled/gray-hollow because those facts aren't propagated. (1) GOSSIP additive per-Instance fields: bound/unbound, controlled + driver-node, harness_only (Offline is never gossiped — node-down is remote-inferred). (2) Derive the full EpDisplay for subnet rows from the gossiped fields, same path as local (remove the remote-reduction). (3) PALETTE rework (fill = ACTIONABLE: filled=can act now (rc-control if online, WAKE if suspended-on-live-node) / hollow=cannot (no control seat / node gone)): green-filled=online+bound+free; blue-filled=online+controlled (desc shows `controlled by <node>`); RED-filled=online+UNBOUND (controlled-or-not; controlled-ness shown via available options not glyph) — replaces green-hollow Unbound + absorbs the dropped UnboundControlled; AMBER-HOLLOW=online+harness-only (no broker seat → can't rc) — was amber-FILLED; GRAY-FILLED=Suspended (cold, node up — wakeable) NEW; gray-hollow=Offline (node down) now REMOTE-ONLY. EpDisplay: drop UnboundControlled, Unbound→red-filled, HarnessOnly→amber-hollow, add Suspended(gray-filled). Picker maps Active|Dormant→online flavor, Suspended→gray-filled, Offline→gray-hollow. (next milestone)",
2026-07-26T22:33:03.3284497Z       "requiredStages": [
2026-07-26T22:33:03.3284572Z         "impl",
2026-07-26T22:33:03.3284658Z         "unit",
2026-07-26T22:33:03.3284739Z         "int"
2026-07-26T22:33:03.3284817Z       ],
2026-07-26T22:33:03.3284901Z       "stages": {
2026-07-26T22:33:03.3284997Z         "doc": {
2026-07-26T22:33:03.3285079Z           "complete": false,
2026-07-26T22:33:03.3285174Z           "evidence": []
2026-07-26T22:33:03.3285306Z         },
2026-07-26T22:33:03.3285401Z         "impl": {
2026-07-26T22:33:03.3285487Z           "complete": true,
2026-07-26T22:33:03.3285571Z           "evidence": [
2026-07-26T22:33:03.3285651Z             {
2026-07-26T22:33:03.3285843Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3285923Z               "line": 556
2026-07-26T22:33:03.3286013Z             },
2026-07-26T22:33:03.3286091Z             {
2026-07-26T22:33:03.3286233Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3286323Z               "line": 614
2026-07-26T22:33:03.3286406Z             },
2026-07-26T22:33:03.3286486Z             {
2026-07-26T22:33:03.3290300Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3290413Z               "line": 686
2026-07-26T22:33:03.3290594Z             },
2026-07-26T22:33:03.3290665Z             {
2026-07-26T22:33:03.3290806Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3290902Z               "line": 171
2026-07-26T22:33:03.3290979Z             },
2026-07-26T22:33:03.3291064Z             {
2026-07-26T22:33:03.3291198Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3291288Z               "line": 181
2026-07-26T22:33:03.3291365Z             },
2026-07-26T22:33:03.3291435Z             {
2026-07-26T22:33:03.3291565Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3291646Z               "line": 191
2026-07-26T22:33:03.3291726Z             },
2026-07-26T22:33:03.3291808Z             {
2026-07-26T22:33:03.3291932Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3292013Z               "line": 233
2026-07-26T22:33:03.3292094Z             },
2026-07-26T22:33:03.3292171Z             {
2026-07-26T22:33:03.3292289Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3292379Z               "line": 508
2026-07-26T22:33:03.3292457Z             },
2026-07-26T22:33:03.3292543Z             {
2026-07-26T22:33:03.3292652Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3292747Z               "line": 512
2026-07-26T22:33:03.3292815Z             },
2026-07-26T22:33:03.3292905Z             {
2026-07-26T22:33:03.3293028Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3293106Z               "line": 516
2026-07-26T22:33:03.3293192Z             },
2026-07-26T22:33:03.3293271Z             {
2026-07-26T22:33:03.3293380Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3293466Z               "line": 601
2026-07-26T22:33:03.3293546Z             },
2026-07-26T22:33:03.3293630Z             {
2026-07-26T22:33:03.3293736Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.3293827Z               "line": 44
2026-07-26T22:33:03.3293973Z             },
2026-07-26T22:33:03.3294060Z             {
2026-07-26T22:33:03.3294174Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.3294269Z               "line": 64
2026-07-26T22:33:03.3294350Z             },
2026-07-26T22:33:03.3294428Z             {
2026-07-26T22:33:03.3294533Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.3294617Z               "line": 71
2026-07-26T22:33:03.3294694Z             },
2026-07-26T22:33:03.3294776Z             {
2026-07-26T22:33:03.3294876Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.3294961Z               "line": 82
2026-07-26T22:33:03.3295033Z             },
2026-07-26T22:33:03.3295114Z             {
2026-07-26T22:33:03.3295218Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.3295309Z               "line": 648
2026-07-26T22:33:03.3295386Z             },
2026-07-26T22:33:03.3295471Z             {
2026-07-26T22:33:03.3295581Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.3295672Z               "line": 653
2026-07-26T22:33:03.3295749Z             },
2026-07-26T22:33:03.3295999Z             {
2026-07-26T22:33:03.3296112Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.3296188Z               "line": 665
2026-07-26T22:33:03.3296268Z             },
2026-07-26T22:33:03.3296350Z             {
2026-07-26T22:33:03.3296512Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.3296603Z               "line": 1231
2026-07-26T22:33:03.3296684Z             },
2026-07-26T22:33:03.3296756Z             {
2026-07-26T22:33:03.3296865Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.3296946Z               "line": 1419
2026-07-26T22:33:03.3297027Z             },
2026-07-26T22:33:03.3297108Z             {
2026-07-26T22:33:03.3297222Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.3297300Z               "line": 80
2026-07-26T22:33:03.3297423Z             },
2026-07-26T22:33:03.3297509Z             {
2026-07-26T22:33:03.3297629Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.3297718Z               "line": 514
2026-07-26T22:33:03.3297809Z             }
2026-07-26T22:33:03.3297891Z           ]
2026-07-26T22:33:03.3297977Z         },
2026-07-26T22:33:03.3298056Z         "int": {
2026-07-26T22:33:03.3298157Z           "complete": true,
2026-07-26T22:33:03.3298244Z           "evidence": [
2026-07-26T22:33:03.3298329Z             {
2026-07-26T22:33:03.3298438Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.3298525Z               "line": 750
2026-07-26T22:33:03.3298602Z             },
2026-07-26T22:33:03.3298690Z             {
2026-07-26T22:33:03.3298789Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.3298881Z               "line": 836
2026-07-26T22:33:03.3299048Z             }
2026-07-26T22:33:03.3299138Z           ]
2026-07-26T22:33:03.3299215Z         },
2026-07-26T22:33:03.3299291Z         "unit": {
2026-07-26T22:33:03.3299376Z           "complete": true,
2026-07-26T22:33:03.3299467Z           "evidence": [
2026-07-26T22:33:03.3299544Z             {
2026-07-26T22:33:03.3299682Z               "path": "crates/spt-net/src/net/registry.rs",
2026-07-26T22:33:03.3299772Z               "line": 1168
2026-07-26T22:33:03.3299850Z             },
2026-07-26T22:33:03.3299930Z             {
2026-07-26T22:33:03.3300049Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.3300130Z               "line": 1921
2026-07-26T22:33:03.3300226Z             },
2026-07-26T22:33:03.3300302Z             {
2026-07-26T22:33:03.3300411Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.3300494Z               "line": 1987
2026-07-26T22:33:03.3300574Z             },
2026-07-26T22:33:03.3300659Z             {
2026-07-26T22:33:03.3300769Z               "path": "crates/spt/src/picker/model.rs",
2026-07-26T22:33:03.3300860Z               "line": 2084
2026-07-26T22:33:03.3301001Z             },
2026-07-26T22:33:03.3301082Z             {
2026-07-26T22:33:03.3301229Z               "path": "crates/spt/src/picker/view.rs",
2026-07-26T22:33:03.3301314Z               "line": 837
2026-07-26T22:33:03.3301385Z             }
2026-07-26T22:33:03.3301467Z           ]
2026-07-26T22:33:03.3301539Z         }
2026-07-26T22:33:03.3301624Z       }
2026-07-26T22:33:03.3301705Z     },
2026-07-26T22:33:03.3301782Z     {
2026-07-26T22:33:03.3301896Z       "id": "REQ-TEARDOWN-UNCOOPERATIVE-HOST",
2026-07-26T22:33:03.3304505Z       "title": "TEARDOWN-AUTHORITY W1 (ADR-0045 decision 4): the teardown kill NEVER depends on harness cooperation — no graceful-input path, no waiting on PTY EOF, no ask-it-to-exit-first step. A WEDGED host is the design case, not the edge case: it is the situation that produced the ADR (doyle's own endpoint — read-only rc replayed the retained PTY and `rc --take` acquired control, but a direct prompt produced no output for 30+s because the retained harness subtree itself was nonresponsive while the broker correctly preserved and replayed its last PTY state). Any cooperation-dependent step re-imports the exact hang the verb exists to break. Gate: impl — the kill path proves no dependency on session responsiveness; int — a deliberately nonresponsive/wedged hosted harness is still reaped within the bound (broker row gone + subtree gone), asserted against a real broker-hosted session.",
2026-07-26T22:33:03.3304792Z       "requiredStages": [
2026-07-26T22:33:03.3304915Z         "impl",
2026-07-26T22:33:03.3304997Z         "int"
2026-07-26T22:33:03.3305078Z       ],
2026-07-26T22:33:03.3305158Z       "stages": {
2026-07-26T22:33:03.3305240Z         "doc": {
2026-07-26T22:33:03.3305336Z           "complete": true,
2026-07-26T22:33:03.3305411Z           "evidence": [
2026-07-26T22:33:03.3305492Z             {
2026-07-26T22:33:03.3305632Z               "path": "docs/adr/0045-endpoint-teardown-authority.md",
2026-07-26T22:33:03.3305726Z               "line": 94
2026-07-26T22:33:03.3305855Z             }
2026-07-26T22:33:03.3305937Z           ]
2026-07-26T22:33:03.3306013Z         },
2026-07-26T22:33:03.3306108Z         "impl": {
2026-07-26T22:33:03.3306184Z           "complete": true,
2026-07-26T22:33:03.3306281Z           "evidence": [
2026-07-26T22:33:03.3306355Z             {
2026-07-26T22:33:03.3306469Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3306559Z               "line": 5953
2026-07-26T22:33:03.3306645Z             },
2026-07-26T22:33:03.3306724Z             {
2026-07-26T22:33:03.3306843Z               "path": "crates/spt/src/teardown.rs",
2026-07-26T22:33:03.3306930Z               "line": 171
2026-07-26T22:33:03.3307002Z             }
2026-07-26T22:33:03.3307081Z           ]
2026-07-26T22:33:03.3307158Z         },
2026-07-26T22:33:03.3307235Z         "int": {
2026-07-26T22:33:03.3307326Z           "complete": true,
2026-07-26T22:33:03.3307401Z           "evidence": [
2026-07-26T22:33:03.3307487Z             {
2026-07-26T22:33:03.3307640Z               "path": "crates/spt/tests/endpoint_teardown_authority_e2e.rs",
2026-07-26T22:33:03.3307734Z               "line": 415
2026-07-26T22:33:03.3307817Z             },
2026-07-26T22:33:03.3307898Z             {
2026-07-26T22:33:03.3308044Z               "path": "crates/spt/tests/endpoint_teardown_authority_e2e.rs",
2026-07-26T22:33:03.3308136Z               "line": 655
2026-07-26T22:33:03.3308222Z             }
2026-07-26T22:33:03.3308303Z           ]
2026-07-26T22:33:03.3308393Z         },
2026-07-26T22:33:03.3308480Z         "unit": {
2026-07-26T22:33:03.3308574Z           "complete": false,
2026-07-26T22:33:03.3308674Z           "evidence": []
2026-07-26T22:33:03.3308756Z         }
2026-07-26T22:33:03.3308828Z       }
2026-07-26T22:33:03.3308921Z     },
2026-07-26T22:33:03.3309081Z     {
2026-07-26T22:33:03.3309171Z       "id": "REQ-TERM-1",
2026-07-26T22:33:03.3309341Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-07-26T22:33:03.3309441Z       "requiredStages": [
2026-07-26T22:33:03.3309589Z         "impl",
2026-07-26T22:33:03.3309665Z         "unit"
2026-07-26T22:33:03.3309751Z       ],
2026-07-26T22:33:03.3309842Z       "stages": {
2026-07-26T22:33:03.3309918Z         "doc": {
2026-07-26T22:33:03.3310017Z           "complete": false,
2026-07-26T22:33:03.3310095Z           "evidence": []
2026-07-26T22:33:03.3310176Z         },
2026-07-26T22:33:03.3310261Z         "impl": {
2026-07-26T22:33:03.3310352Z           "complete": true,
2026-07-26T22:33:03.3310429Z           "evidence": [
2026-07-26T22:33:03.3310514Z             {
2026-07-26T22:33:03.3310618Z               "path": "crates/spt-term/src/pty.rs",
2026-07-26T22:33:03.3310700Z               "line": 59
2026-07-26T22:33:03.3310781Z             },
2026-07-26T22:33:03.3310862Z             {
2026-07-26T22:33:03.3310966Z               "path": "crates/spt-term/src/pty.rs",
2026-07-26T22:33:03.3311044Z               "line": 234
2026-07-26T22:33:03.3311129Z             },
2026-07-26T22:33:03.3311209Z             {
2026-07-26T22:33:03.3311315Z               "path": "crates/spt-term/src/surface.rs",
2026-07-26T22:33:03.3311406Z               "line": 100
2026-07-26T22:33:03.3311538Z             }
2026-07-26T22:33:03.3311623Z           ]
2026-07-26T22:33:03.3311700Z         },
2026-07-26T22:33:03.3311789Z         "int": {
2026-07-26T22:33:03.3311883Z           "complete": false,
2026-07-26T22:33:03.3312027Z           "evidence": []
2026-07-26T22:33:03.3312104Z         },
2026-07-26T22:33:03.3312189Z         "unit": {
2026-07-26T22:33:03.3312270Z           "complete": true,
2026-07-26T22:33:03.3312351Z           "evidence": [
2026-07-26T22:33:03.3312432Z             {
2026-07-26T22:33:03.3312555Z               "path": "crates/spt-term/tests/surface.rs",
2026-07-26T22:33:03.3312643Z               "line": 24
2026-07-26T22:33:03.3312728Z             },
2026-07-26T22:33:03.3312799Z             {
2026-07-26T22:33:03.3312914Z               "path": "crates/spt-term/tests/surface.rs",
2026-07-26T22:33:03.3313062Z               "line": 56
2026-07-26T22:33:03.3313157Z             }
2026-07-26T22:33:03.3313238Z           ]
2026-07-26T22:33:03.3313315Z         }
2026-07-26T22:33:03.3313395Z       }
2026-07-26T22:33:03.3313481Z     },
2026-07-26T22:33:03.3313558Z     {
2026-07-26T22:33:03.3313649Z       "id": "REQ-TERM-2",
2026-07-26T22:33:03.3313815Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-07-26T22:33:03.3313916Z       "requiredStages": [
2026-07-26T22:33:03.3314001Z         "impl",
2026-07-26T22:33:03.3314081Z         "unit"
2026-07-26T22:33:03.3314158Z       ],
2026-07-26T22:33:03.3314246Z       "stages": {
2026-07-26T22:33:03.3314321Z         "doc": {
2026-07-26T22:33:03.3314410Z           "complete": false,
2026-07-26T22:33:03.3314495Z           "evidence": []
2026-07-26T22:33:03.3314572Z         },
2026-07-26T22:33:03.3314661Z         "impl": {
2026-07-26T22:33:03.3314784Z           "complete": true,
2026-07-26T22:33:03.3314985Z           "evidence": [
2026-07-26T22:33:03.3315098Z             {
2026-07-26T22:33:03.3315276Z               "path": "crates/spt-term/src/surface.rs",
2026-07-26T22:33:03.3315394Z               "line": 117
2026-07-26T22:33:03.3315515Z             },
2026-07-26T22:33:03.3315633Z             {
2026-07-26T22:33:03.3315761Z               "path": "crates/spt-term/src/surface.rs",
2026-07-26T22:33:03.3315848Z               "line": 127
2026-07-26T22:33:03.3315938Z             }
2026-07-26T22:33:03.3316019Z           ]
2026-07-26T22:33:03.3316100Z         },
2026-07-26T22:33:03.3316182Z         "int": {
2026-07-26T22:33:03.3316295Z           "complete": false,
2026-07-26T22:33:03.3316401Z           "evidence": []
2026-07-26T22:33:03.3316483Z         },
2026-07-26T22:33:03.3316564Z         "unit": {
2026-07-26T22:33:03.3316653Z           "complete": true,
2026-07-26T22:33:03.3316740Z           "evidence": [
2026-07-26T22:33:03.3316812Z             {
2026-07-26T22:33:03.3316930Z               "path": "crates/spt-term/tests/inject.rs",
2026-07-26T22:33:03.3317020Z               "line": 46
2026-07-26T22:33:03.3317177Z             },
2026-07-26T22:33:03.3317252Z             {
2026-07-26T22:33:03.3317365Z               "path": "crates/spt-term/tests/inject.rs",
2026-07-26T22:33:03.3317461Z               "line": 77
2026-07-26T22:33:03.3317543Z             }
2026-07-26T22:33:03.3317627Z           ]
2026-07-26T22:33:03.3317703Z         }
2026-07-26T22:33:03.3317786Z       }
2026-07-26T22:33:03.3317866Z     },
2026-07-26T22:33:03.3317946Z     {
2026-07-26T22:33:03.3318032Z       "id": "REQ-TERM-3",
2026-07-26T22:33:03.3318171Z       "title": "Byte-stream remote terminal streaming for v1",
2026-07-26T22:33:03.3318261Z       "requiredStages": [
2026-07-26T22:33:03.3318347Z         "impl",
2026-07-26T22:33:03.3318429Z         "unit"
2026-07-26T22:33:03.3318519Z       ],
2026-07-26T22:33:03.3318604Z       "stages": {
2026-07-26T22:33:03.3318691Z         "doc": {
2026-07-26T22:33:03.3318782Z           "complete": false,
2026-07-26T22:33:03.3318877Z           "evidence": []
2026-07-26T22:33:03.3319030Z         },
2026-07-26T22:33:03.3319121Z         "impl": {
2026-07-26T22:33:03.3319206Z           "complete": true,
2026-07-26T22:33:03.3319482Z           "evidence": [
2026-07-26T22:33:03.3319563Z             {
2026-07-26T22:33:03.3319674Z               "path": "crates/spt-term/src/stream.rs",
2026-07-26T22:33:03.3319769Z               "line": 73
2026-07-26T22:33:03.3319848Z             }
2026-07-26T22:33:03.3319977Z           ]
2026-07-26T22:33:03.3320054Z         },
2026-07-26T22:33:03.3320135Z         "int": {
2026-07-26T22:33:03.3320220Z           "complete": false,
2026-07-26T22:33:03.3320311Z           "evidence": []
2026-07-26T22:33:03.3320383Z         },
2026-07-26T22:33:03.3320464Z         "unit": {
2026-07-26T22:33:03.3320554Z           "complete": true,
2026-07-26T22:33:03.3320636Z           "evidence": [
2026-07-26T22:33:03.3320712Z             {
2026-07-26T22:33:03.3320830Z               "path": "crates/spt-term/tests/stream.rs",
2026-07-26T22:33:03.3320917Z               "line": 37
2026-07-26T22:33:03.3321045Z             },
2026-07-26T22:33:03.3321126Z             {
2026-07-26T22:33:03.3321241Z               "path": "crates/spt-term/tests/stream.rs",
2026-07-26T22:33:03.3321323Z               "line": 67
2026-07-26T22:33:03.3321408Z             }
2026-07-26T22:33:03.3321489Z           ]
2026-07-26T22:33:03.3321571Z         }
2026-07-26T22:33:03.3321652Z       }
2026-07-26T22:33:03.3321731Z     },
2026-07-26T22:33:03.3321808Z     {
2026-07-26T22:33:03.3321900Z       "id": "REQ-TERM-4",
2026-07-26T22:33:03.3322359Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-07-26T22:33:03.3322458Z       "requiredStages": [
2026-07-26T22:33:03.3322539Z         "impl",
2026-07-26T22:33:03.3322621Z         "unit",
2026-07-26T22:33:03.3322701Z         "int"
2026-07-26T22:33:03.3322777Z       ],
2026-07-26T22:33:03.3322858Z       "stages": {
2026-07-26T22:33:03.3322940Z         "doc": {
2026-07-26T22:33:03.3323021Z           "complete": false,
2026-07-26T22:33:03.3323115Z           "evidence": []
2026-07-26T22:33:03.3323188Z         },
2026-07-26T22:33:03.3323283Z         "impl": {
2026-07-26T22:33:03.3323373Z           "complete": true,
2026-07-26T22:33:03.3323454Z           "evidence": [
2026-07-26T22:33:03.3323527Z             {
2026-07-26T22:33:03.3323646Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:03.3323731Z               "line": 37
2026-07-26T22:33:03.3323812Z             },
2026-07-26T22:33:03.3323889Z             {
2026-07-26T22:33:03.3324003Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-07-26T22:33:03.3324088Z               "line": 25
2026-07-26T22:33:03.3324167Z             },
2026-07-26T22:33:03.3324246Z             {
2026-07-26T22:33:03.3324370Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-07-26T22:33:03.3324452Z               "line": 114
2026-07-26T22:33:03.3324538Z             },
2026-07-26T22:33:03.3324680Z             {
2026-07-26T22:33:03.3324801Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-07-26T22:33:03.3324890Z               "line": 267
2026-07-26T22:33:03.3324966Z             },
2026-07-26T22:33:03.3325046Z             {
2026-07-26T22:33:03.3325160Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-07-26T22:33:03.3325254Z               "line": 293
2026-07-26T22:33:03.3325334Z             },
2026-07-26T22:33:03.3325416Z             {
2026-07-26T22:33:03.3325526Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-07-26T22:33:03.3325621Z               "line": 311
2026-07-26T22:33:03.3325702Z             },
2026-07-26T22:33:03.3325779Z             {
2026-07-26T22:33:03.3325889Z               "path": "crates/spt-store/src/history.rs",
2026-07-26T22:33:03.3325978Z               "line": 33
2026-07-26T22:33:03.3326060Z             },
2026-07-26T22:33:03.3326146Z             {
2026-07-26T22:33:03.3326269Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3326360Z               "line": 52
2026-07-26T22:33:03.3326437Z             },
2026-07-26T22:33:03.3326561Z             {
2026-07-26T22:33:03.3326684Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3326771Z               "line": 180
2026-07-26T22:33:03.3326856Z             },
2026-07-26T22:33:03.3326932Z             {
2026-07-26T22:33:03.3327086Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3327180Z               "line": 190
2026-07-26T22:33:03.3327256Z             },
2026-07-26T22:33:03.3327348Z             {
2026-07-26T22:33:03.3327467Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3327556Z               "line": 254
2026-07-26T22:33:03.3327636Z             },
2026-07-26T22:33:03.3327718Z             {
2026-07-26T22:33:03.3327830Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.3327920Z               "line": 388
2026-07-26T22:33:03.3328050Z             },
2026-07-26T22:33:03.3328122Z             {
2026-07-26T22:33:03.3328230Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.3328326Z               "line": 399
2026-07-26T22:33:03.3328412Z             },
2026-07-26T22:33:03.3328493Z             {
2026-07-26T22:33:03.3328588Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3328680Z               "line": 1574
2026-07-26T22:33:03.3328760Z             }
2026-07-26T22:33:03.3328840Z           ]
2026-07-26T22:33:03.3328922Z         },
2026-07-26T22:33:03.3329070Z         "int": {
2026-07-26T22:33:03.3329169Z           "complete": true,
2026-07-26T22:33:03.3329251Z           "evidence": [
2026-07-26T22:33:03.3329342Z             {
2026-07-26T22:33:03.3329461Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-07-26T22:33:03.3329556Z               "line": 18
2026-07-26T22:33:03.3329638Z             }
2026-07-26T22:33:03.3329723Z           ]
2026-07-26T22:33:03.3329804Z         },
2026-07-26T22:33:03.3329891Z         "unit": {
2026-07-26T22:33:03.3329982Z           "complete": true,
2026-07-26T22:33:03.3330070Z           "evidence": [
2026-07-26T22:33:03.3330142Z             {
2026-07-26T22:33:03.3330258Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:03.3330348Z               "line": 537
2026-07-26T22:33:03.3330423Z             },
2026-07-26T22:33:03.3330503Z             {
2026-07-26T22:33:03.3330624Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:03.3330705Z               "line": 590
2026-07-26T22:33:03.3330790Z             },
2026-07-26T22:33:03.3330867Z             {
2026-07-26T22:33:03.3330981Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:03.3331066Z               "line": 600
2026-07-26T22:33:03.3331157Z             },
2026-07-26T22:33:03.3331230Z             {
2026-07-26T22:33:03.3331353Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-07-26T22:33:03.3331438Z               "line": 443
2026-07-26T22:33:03.3331582Z             },
2026-07-26T22:33:03.3331668Z             {
2026-07-26T22:33:03.3331786Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-07-26T22:33:03.3331869Z               "line": 463
2026-07-26T22:33:03.3331953Z             },
2026-07-26T22:33:03.3332029Z             {
2026-07-26T22:33:03.3332150Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-07-26T22:33:03.3332231Z               "line": 485
2026-07-26T22:33:03.3332311Z             },
2026-07-26T22:33:03.3332382Z             {
2026-07-26T22:33:03.3332508Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-07-26T22:33:03.3332597Z               "line": 498
2026-07-26T22:33:03.3332682Z             },
2026-07-26T22:33:03.3332773Z             {
2026-07-26T22:33:03.3332881Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-07-26T22:33:03.3332971Z               "line": 509
2026-07-26T22:33:03.3333056Z             },
2026-07-26T22:33:03.3333133Z             {
2026-07-26T22:33:03.3333238Z               "path": "crates/spt-store/src/history.rs",
2026-07-26T22:33:03.3333333Z               "line": 108
2026-07-26T22:33:03.3333477Z             },
2026-07-26T22:33:03.3333562Z             {
2026-07-26T22:33:03.3333676Z               "path": "crates/spt-term/src/digest.rs",
2026-07-26T22:33:03.3333773Z               "line": 207
2026-07-26T22:33:03.3333848Z             },
2026-07-26T22:33:03.3333991Z             {
2026-07-26T22:33:03.3334087Z               "path": "crates/spt-term/src/digest.rs",
2026-07-26T22:33:03.3334177Z               "line": 215
2026-07-26T22:33:03.3334258Z             },
2026-07-26T22:33:03.3334334Z             {
2026-07-26T22:33:03.3334449Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3334544Z               "line": 537
2026-07-26T22:33:03.3334630Z             },
2026-07-26T22:33:03.3334712Z             {
2026-07-26T22:33:03.3334825Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3334959Z               "line": 564
2026-07-26T22:33:03.3335041Z             },
2026-07-26T22:33:03.3335117Z             {
2026-07-26T22:33:03.3335231Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3335322Z               "line": 583
2026-07-26T22:33:03.3335399Z             },
2026-07-26T22:33:03.3335478Z             {
2026-07-26T22:33:03.3335591Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3335678Z               "line": 598
2026-07-26T22:33:03.3335749Z             },
2026-07-26T22:33:03.3335828Z             {
2026-07-26T22:33:03.3335937Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3336029Z               "line": 624
2026-07-26T22:33:03.3336110Z             },
2026-07-26T22:33:03.3336190Z             {
2026-07-26T22:33:03.3336300Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3336387Z               "line": 644
2026-07-26T22:33:03.3336463Z             },
2026-07-26T22:33:03.3336547Z             {
2026-07-26T22:33:03.3336668Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3336754Z               "line": 654
2026-07-26T22:33:03.3336834Z             },
2026-07-26T22:33:03.3336916Z             {
2026-07-26T22:33:03.3337035Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3337111Z               "line": 747
2026-07-26T22:33:03.3337191Z             },
2026-07-26T22:33:03.3337269Z             {
2026-07-26T22:33:03.3337387Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.3337478Z               "line": 1526
2026-07-26T22:33:03.3337564Z             },
2026-07-26T22:33:03.3337646Z             {
2026-07-26T22:33:03.3337754Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3337840Z               "line": 17610
2026-07-26T22:33:03.3337928Z             }
2026-07-26T22:33:03.3338008Z           ]
2026-07-26T22:33:03.3338097Z         }
2026-07-26T22:33:03.3338178Z       }
2026-07-26T22:33:03.3338259Z     },
2026-07-26T22:33:03.3338386Z     {
2026-07-26T22:33:03.3338480Z       "id": "REQ-TERM-5",
2026-07-26T22:33:03.3340026Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-07-26T22:33:03.3340136Z       "requiredStages": [
2026-07-26T22:33:03.3340217Z         "doc",
2026-07-26T22:33:03.3340306Z         "impl",
2026-07-26T22:33:03.3340393Z         "unit",
2026-07-26T22:33:03.3340480Z         "int"
2026-07-26T22:33:03.3340560Z       ],
2026-07-26T22:33:03.3340645Z       "stages": {
2026-07-26T22:33:03.3340737Z         "doc": {
2026-07-26T22:33:03.3340828Z           "complete": true,
2026-07-26T22:33:03.3340917Z           "evidence": [
2026-07-26T22:33:03.3341054Z             {
2026-07-26T22:33:03.3341160Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.3341246Z               "line": 385
2026-07-26T22:33:03.3341340Z             }
2026-07-26T22:33:03.3341422Z           ]
2026-07-26T22:33:03.3341561Z         },
2026-07-26T22:33:03.3341645Z         "impl": {
2026-07-26T22:33:03.3341737Z           "complete": true,
2026-07-26T22:33:03.3341823Z           "evidence": [
2026-07-26T22:33:03.3341899Z             {
2026-07-26T22:33:03.3342018Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:03.3342114Z               "line": 75
2026-07-26T22:33:03.3342194Z             },
2026-07-26T22:33:03.3342270Z             {
2026-07-26T22:33:03.3342381Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:03.3342471Z               "line": 131
2026-07-26T22:33:03.3342609Z             },
2026-07-26T22:33:03.3342696Z             {
2026-07-26T22:33:03.3342800Z               "path": "crates/spt-live/src/digest.rs",
2026-07-26T22:33:03.3342895Z               "line": 22
2026-07-26T22:33:03.3342981Z             },
2026-07-26T22:33:03.3343063Z             {
2026-07-26T22:33:03.3343171Z               "path": "crates/spt-live/src/digest.rs",
2026-07-26T22:33:03.3343266Z               "line": 87
2026-07-26T22:33:03.3343342Z             },
2026-07-26T22:33:03.3343433Z             {
2026-07-26T22:33:03.3343531Z               "path": "crates/spt-term/src/digest.rs",
2026-07-26T22:33:03.3343625Z               "line": 30
2026-07-26T22:33:03.3343707Z             },
2026-07-26T22:33:03.3343789Z             {
2026-07-26T22:33:03.3343902Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3343993Z               "line": 103
2026-07-26T22:33:03.3344070Z             },
2026-07-26T22:33:03.3344151Z             {
2026-07-26T22:33:03.3344269Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3344361Z               "line": 167
2026-07-26T22:33:03.3344437Z             },
2026-07-26T22:33:03.3344522Z             {
2026-07-26T22:33:03.3344638Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3344728Z               "line": 497
2026-07-26T22:33:03.3344808Z             },
2026-07-26T22:33:03.3344889Z             {
2026-07-26T22:33:03.3345000Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3345090Z               "line": 10588
2026-07-26T22:33:03.3345171Z             },
2026-07-26T22:33:03.3345253Z             {
2026-07-26T22:33:03.3345357Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3345447Z               "line": 11515
2026-07-26T22:33:03.3345519Z             }
2026-07-26T22:33:03.3345601Z           ]
2026-07-26T22:33:03.3345677Z         },
2026-07-26T22:33:03.3345757Z         "int": {
2026-07-26T22:33:03.3345853Z           "complete": true,
2026-07-26T22:33:03.3345935Z           "evidence": [
2026-07-26T22:33:03.3346081Z             {
2026-07-26T22:33:03.3346228Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-07-26T22:33:03.3346323Z               "line": 17
2026-07-26T22:33:03.3346403Z             }
2026-07-26T22:33:03.3346483Z           ]
2026-07-26T22:33:03.3346560Z         },
2026-07-26T22:33:03.3346642Z         "unit": {
2026-07-26T22:33:03.3346727Z           "complete": true,
2026-07-26T22:33:03.3346822Z           "evidence": [
2026-07-26T22:33:03.3346904Z             {
2026-07-26T22:33:03.3347023Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:03.3347108Z               "line": 548
2026-07-26T22:33:03.3347190Z             },
2026-07-26T22:33:03.3347271Z             {
2026-07-26T22:33:03.3347389Z               "path": "crates/spt-live/src/digest.rs",
2026-07-26T22:33:03.3347476Z               "line": 191
2026-07-26T22:33:03.3347562Z             },
2026-07-26T22:33:03.3347642Z             {
2026-07-26T22:33:03.3347752Z               "path": "crates/spt-live/src/digest.rs",
2026-07-26T22:33:03.3347834Z               "line": 208
2026-07-26T22:33:03.3347962Z             },
2026-07-26T22:33:03.3348043Z             {
2026-07-26T22:33:03.3348159Z               "path": "crates/spt-live/src/digest.rs",
2026-07-26T22:33:03.3348244Z               "line": 281
2026-07-26T22:33:03.3348333Z             },
2026-07-26T22:33:03.3348440Z             {
2026-07-26T22:33:03.3348544Z               "path": "crates/spt-live/src/digest.rs",
2026-07-26T22:33:03.3348629Z               "line": 292
2026-07-26T22:33:03.3348714Z             },
2026-07-26T22:33:03.3348795Z             {
2026-07-26T22:33:03.3348913Z               "path": "crates/spt-live/src/digest.rs",
2026-07-26T22:33:03.3349083Z               "line": 303
2026-07-26T22:33:03.3349165Z             },
2026-07-26T22:33:03.3349251Z             {
2026-07-26T22:33:03.3349374Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.3349475Z               "line": 1917
2026-07-26T22:33:03.3349608Z             },
2026-07-26T22:33:03.3349694Z             {
2026-07-26T22:33:03.3349804Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.3349904Z               "line": 2000
2026-07-26T22:33:03.3349984Z             },
2026-07-26T22:33:03.3350067Z             {
2026-07-26T22:33:03.3350185Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3350285Z               "line": 669
2026-07-26T22:33:03.3350366Z             },
2026-07-26T22:33:03.3350444Z             {
2026-07-26T22:33:03.3350557Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3350648Z               "line": 697
2026-07-26T22:33:03.3350725Z             },
2026-07-26T22:33:03.3350819Z             {
2026-07-26T22:33:03.3350920Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3351006Z               "line": 709
2026-07-26T22:33:03.3351078Z             },
2026-07-26T22:33:03.3351167Z             {
2026-07-26T22:33:03.3351287Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3351383Z               "line": 733
2026-07-26T22:33:03.3351505Z             },
2026-07-26T22:33:03.3351628Z             {
2026-07-26T22:33:03.3351768Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3351891Z               "line": 16063
2026-07-26T22:33:03.3352006Z             },
2026-07-26T22:33:03.3352121Z             {
2026-07-26T22:33:03.3352268Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3352420Z               "line": 16121
2026-07-26T22:33:03.3352553Z             }
2026-07-26T22:33:03.3352679Z           ]
2026-07-26T22:33:03.3352798Z         }
2026-07-26T22:33:03.3352873Z       }
2026-07-26T22:33:03.3352955Z     },
2026-07-26T22:33:03.3353037Z     {
2026-07-26T22:33:03.3353131Z       "id": "REQ-TERM-6",
2026-07-26T22:33:03.3354220Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-07-26T22:33:03.3354415Z       "requiredStages": [
2026-07-26T22:33:03.3354496Z         "impl",
2026-07-26T22:33:03.3354577Z         "unit",
2026-07-26T22:33:03.3354654Z         "int"
2026-07-26T22:33:03.3354729Z       ],
2026-07-26T22:33:03.3354810Z       "stages": {
2026-07-26T22:33:03.3354898Z         "doc": {
2026-07-26T22:33:03.3354987Z           "complete": false,
2026-07-26T22:33:03.3355068Z           "evidence": []
2026-07-26T22:33:03.3355149Z         },
2026-07-26T22:33:03.3355241Z         "impl": {
2026-07-26T22:33:03.3355331Z           "complete": true,
2026-07-26T22:33:03.3355416Z           "evidence": [
2026-07-26T22:33:03.3355493Z             {
2026-07-26T22:33:03.3355616Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:03.3355702Z               "line": 132
2026-07-26T22:33:03.3355793Z             },
2026-07-26T22:33:03.3355936Z             {
2026-07-26T22:33:03.3356060Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:03.3356142Z               "line": 215
2026-07-26T22:33:03.3356232Z             },
2026-07-26T22:33:03.3356303Z             {
2026-07-26T22:33:03.3356476Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:03.3356552Z               "line": 17
2026-07-26T22:33:03.3356641Z             },
2026-07-26T22:33:03.3356721Z             {
2026-07-26T22:33:03.3356836Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:03.3356916Z               "line": 149
2026-07-26T22:33:03.3357001Z             },
2026-07-26T22:33:03.3357067Z             {
2026-07-26T22:33:03.3357197Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3357292Z               "line": 329
2026-07-26T22:33:03.3357396Z             },
2026-07-26T22:33:03.3357483Z             {
2026-07-26T22:33:03.3357601Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3357691Z               "line": 459
2026-07-26T22:33:03.3357770Z             }
2026-07-26T22:33:03.3357845Z           ]
2026-07-26T22:33:03.3357921Z         },
2026-07-26T22:33:03.3358011Z         "int": {
2026-07-26T22:33:03.3358099Z           "complete": true,
2026-07-26T22:33:03.3358193Z           "evidence": [
2026-07-26T22:33:03.3358274Z             {
2026-07-26T22:33:03.3358428Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-07-26T22:33:03.3358517Z               "line": 18
2026-07-26T22:33:03.3358603Z             }
2026-07-26T22:33:03.3358680Z           ]
2026-07-26T22:33:03.3358752Z         },
2026-07-26T22:33:03.3358836Z         "unit": {
2026-07-26T22:33:03.3358932Z           "complete": true,
2026-07-26T22:33:03.3359123Z           "evidence": [
2026-07-26T22:33:03.3359208Z             {
2026-07-26T22:33:03.3359322Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:03.3359412Z               "line": 200
2026-07-26T22:33:03.3359496Z             },
2026-07-26T22:33:03.3359586Z             {
2026-07-26T22:33:03.3359697Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:03.3359788Z               "line": 215
2026-07-26T22:33:03.3359863Z             },
2026-07-26T22:33:03.3359944Z             {
2026-07-26T22:33:03.3363530Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:03.3363648Z               "line": 231
2026-07-26T22:33:03.3363729Z             },
2026-07-26T22:33:03.3363811Z             {
2026-07-26T22:33:03.3363949Z               "path": "crates/spt-store/src/sessions.rs",
2026-07-26T22:33:03.3364044Z               "line": 462
2026-07-26T22:33:03.3364120Z             },
2026-07-26T22:33:03.3364203Z             {
2026-07-26T22:33:03.3364324Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3364414Z               "line": 809
2026-07-26T22:33:03.3364600Z             },
2026-07-26T22:33:03.3364679Z             {
2026-07-26T22:33:03.3364799Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3364900Z               "line": 830
2026-07-26T22:33:03.3364975Z             },
2026-07-26T22:33:03.3365061Z             {
2026-07-26T22:33:03.3365181Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.3365271Z               "line": 1280
2026-07-26T22:33:03.3365351Z             }
2026-07-26T22:33:03.3365433Z           ]
2026-07-26T22:33:03.3365510Z         }
2026-07-26T22:33:03.3365586Z       }
2026-07-26T22:33:03.3365666Z     },
2026-07-26T22:33:03.3365739Z     {
2026-07-26T22:33:03.3365829Z       "id": "REQ-TERM-7",
2026-07-26T22:33:03.3366969Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-07-26T22:33:03.3367126Z       "requiredStages": [
2026-07-26T22:33:03.3367215Z         "impl",
2026-07-26T22:33:03.3367291Z         "unit",
2026-07-26T22:33:03.3367363Z         "int"
2026-07-26T22:33:03.3367499Z       ],
2026-07-26T22:33:03.3367580Z       "stages": {
2026-07-26T22:33:03.3367671Z         "doc": {
2026-07-26T22:33:03.3367762Z           "complete": false,
2026-07-26T22:33:03.3367861Z           "evidence": []
2026-07-26T22:33:03.3367942Z         },
2026-07-26T22:33:03.3368025Z         "impl": {
2026-07-26T22:33:03.3368115Z           "complete": true,
2026-07-26T22:33:03.3368190Z           "evidence": [
2026-07-26T22:33:03.3368271Z             {
2026-07-26T22:33:03.3368386Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:03.3368476Z               "line": 133
2026-07-26T22:33:03.3368615Z             },
2026-07-26T22:33:03.3368701Z             {
2026-07-26T22:33:03.3368819Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:03.3368905Z               "line": 498
2026-07-26T22:33:03.3369087Z             },
2026-07-26T22:33:03.3369172Z             {
2026-07-26T22:33:03.3369288Z               "path": "crates/spt-live/src/inject.rs",
2026-07-26T22:33:03.3369373Z               "line": 15
2026-07-26T22:33:03.3369463Z             },
2026-07-26T22:33:03.3369545Z             {
2026-07-26T22:33:03.3369655Z               "path": "crates/spt-live/src/inject.rs",
2026-07-26T22:33:03.3369735Z               "line": 32
2026-07-26T22:33:03.3369820Z             },
2026-07-26T22:33:03.3369901Z             {
2026-07-26T22:33:03.3370024Z               "path": "crates/spt-store/src/history.rs",
2026-07-26T22:33:03.3370109Z               "line": 49
2026-07-26T22:33:03.3370189Z             },
2026-07-26T22:33:03.3370271Z             {
2026-07-26T22:33:03.3370390Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3370480Z               "line": 290
2026-07-26T22:33:03.3370562Z             },
2026-07-26T22:33:03.3370634Z             {
2026-07-26T22:33:03.3370747Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3370828Z               "line": 330
2026-07-26T22:33:03.3370910Z             }
2026-07-26T22:33:03.3370991Z           ]
2026-07-26T22:33:03.3371071Z         },
2026-07-26T22:33:03.3371158Z         "int": {
2026-07-26T22:33:03.3371244Z           "complete": true,
2026-07-26T22:33:03.3371339Z           "evidence": [
2026-07-26T22:33:03.3371420Z             {
2026-07-26T22:33:03.3371573Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-07-26T22:33:03.3371658Z               "line": 19
2026-07-26T22:33:03.3371744Z             }
2026-07-26T22:33:03.3371816Z           ]
2026-07-26T22:33:03.3371902Z         },
2026-07-26T22:33:03.3371982Z         "unit": {
2026-07-26T22:33:03.3372078Z           "complete": true,
2026-07-26T22:33:03.3372222Z           "evidence": [
2026-07-26T22:33:03.3372316Z             {
2026-07-26T22:33:03.3372437Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:03.3372532Z               "line": 629
2026-07-26T22:33:03.3372611Z             },
2026-07-26T22:33:03.3372687Z             {
2026-07-26T22:33:03.3372792Z               "path": "crates/spt-daemon/src/digest.rs",
2026-07-26T22:33:03.3372888Z               "line": 859
2026-07-26T22:33:03.3372964Z             },
2026-07-26T22:33:03.3373049Z             {
2026-07-26T22:33:03.3373160Z               "path": "crates/spt-live/src/inject.rs",
2026-07-26T22:33:03.3373255Z               "line": 58
2026-07-26T22:33:03.3373331Z             },
2026-07-26T22:33:03.3373407Z             {
2026-07-26T22:33:03.3373513Z               "path": "crates/spt-live/src/inject.rs",
2026-07-26T22:33:03.3373603Z               "line": 77
2026-07-26T22:33:03.3373683Z             },
2026-07-26T22:33:03.3373771Z             {
2026-07-26T22:33:03.3373884Z               "path": "crates/spt-live/src/inject.rs",
2026-07-26T22:33:03.3373970Z               "line": 87
2026-07-26T22:33:03.3374109Z             },
2026-07-26T22:33:03.3374194Z             {
2026-07-26T22:33:03.3374313Z               "path": "crates/spt-store/src/history.rs",
2026-07-26T22:33:03.3374396Z               "line": 94
2026-07-26T22:33:03.3374471Z             },
2026-07-26T22:33:03.3374599Z             {
2026-07-26T22:33:03.3374720Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3374800Z               "line": 755
2026-07-26T22:33:03.3374880Z             },
2026-07-26T22:33:03.3374961Z             {
2026-07-26T22:33:03.3375080Z               "path": "crates/spt-term/src/projection.rs",
2026-07-26T22:33:03.3375160Z               "line": 787
2026-07-26T22:33:03.3375239Z             }
2026-07-26T22:33:03.3375315Z           ]
2026-07-26T22:33:03.3375402Z         }
2026-07-26T22:33:03.3375484Z       }
2026-07-26T22:33:03.3375621Z     },
2026-07-26T22:33:03.3375688Z     {
2026-07-26T22:33:03.3375798Z       "id": "REQ-TERM-ECHO-CLAMP-WINDOW",
2026-07-26T22:33:03.3381757Z       "title": "SEED (DAEMON-LIFECYCLE W3 rideout, field-grounded 2026-07-22): the hosted-TUI echo CLAMP WINDOW — a Windows pseudoconsole boots with echo/line input ON (in=0x1f7, measured by the 7.55 instrument @0f74bba) and it is the hosted CHILD that clamps them, so any window in which the TUI has not yet (re-)clamped echoes typed bytes into PTY output SERVER-SIDE with no seam re-enabling anything. FIELD GROUNDING (hertz capture-2 byte timeline, output-only taps): echo onset is NOT resize-instant — first echoed key lands 6003ms after the first resize-associated repaint burst, IMMEDIATELY after a 3225-byte TUI-reinitialization-shaped absolute repaint (no alt-screen/mode CSI anywhere — cursor hide/show + HOME/absolute repaints only); echo CEASES mid-input (isolated c/o/n/f/i, NO g) directly after a 535-byte TUI diff — consistent with a late clamp landing (a WinAPI mode call is invisible to a byte tap). The resize seam itself is measured MODE-PRESERVING (REQ-RESIZE-INPUT-MODE-INTEGRITY rig, four sample points). OPEN AT TRIAGE: (1) whether the clamp is the TUI's own SetConsoleMode or portable-pty/ConPTY-internal; (2) whether spt-core CAN mitigate at all — the daemon structurally cannot read or set the child console's input modes from the master side (platform fact, 7.55), so candidate mitigations are indirect (e.g. hold/queue injected input until first child output after a reinit-shaped burst — evaluate honestly, may be worse than the disease) and the honest outcome may be an OUT-OF-OUR-CODE finding filed upstream (hosted-TUI reinit behavior + Windows boot default); (3) whether the window also explains historical spt-hosted-only echo reports (non-spt sessions bypass the nested ConPTY — KH 7.55 note). Kin: KH 7.55 (hazard + instrument), KH 7.56 / the DNAR class (console boot defaults and clamp ownership = one seam family), REQ-ATTACH-SEED-REQUEST-DOUBLE-SERVE (the rideout-seed precedent). Instrument + rig to reuse: the 7.55 probe child (protocol-line verdict, raw-first precondition, seeded-echo capability probe).",
2026-07-26T22:33:03.3381942Z       "requiredStages": [],
2026-07-26T22:33:03.3382018Z       "stages": {
2026-07-26T22:33:03.3382101Z         "doc": {
2026-07-26T22:33:03.3382190Z           "complete": false,
2026-07-26T22:33:03.3382285Z           "evidence": []
2026-07-26T22:33:03.3382357Z         },
2026-07-26T22:33:03.3382444Z         "impl": {
2026-07-26T22:33:03.3382533Z           "complete": false,
2026-07-26T22:33:03.3382624Z           "evidence": []
2026-07-26T22:33:03.3382701Z         },
2026-07-26T22:33:03.3382777Z         "int": {
2026-07-26T22:33:03.3382857Z           "complete": false,
2026-07-26T22:33:03.3382939Z           "evidence": []
2026-07-26T22:33:03.3383011Z         },
2026-07-26T22:33:03.3383101Z         "unit": {
2026-07-26T22:33:03.3383185Z           "complete": false,
2026-07-26T22:33:03.3383280Z           "evidence": []
2026-07-26T22:33:03.3383362Z         }
2026-07-26T22:33:03.3383444Z       }
2026-07-26T22:33:03.3383524Z     },
2026-07-26T22:33:03.3383604Z     {
2026-07-26T22:33:03.3383787Z       "id": "REQ-TRANSLATE-BINARY-LIVENESS-DECAY",
2026-07-26T22:33:03.3386096Z       "title": "SUPERSEDED by REQ-TRANSLATE-COMMIT-MISS-TOLERANCE (F029 C-1). B6 (F028, perri F-e) was ROOT-PINNED as the commit-deadline-miss fault: at a checkpoint clear boundary the clear-only inject's {commit} was never observed within INJECT_COMMIT_DEADLINE, so the inject worker FAULTED + TERMINATED a HEALTHY translate binary and (by ADR-0022) never respawned → every subsequent force-native reported delivered=false ('no live translation binary'). NOT a dormancy/liveness-registration decay (that hypothesis is dead) — deterministic at every checkpoint-armed boundary. The fix (miss != fault + N=3 strike budget + bounded respawn + perch-visible fault stamp) lives under REQ-TRANSLATE-COMMIT-MISS-TOLERANCE + REQ-HAZARD-TRANSLATE-FAULT-PERMANENT-DEATH. See triage addendum C-1.",
2026-07-26T22:33:03.3386292Z       "requiredStages": [],
2026-07-26T22:33:03.3386372Z       "stages": {
2026-07-26T22:33:03.3386452Z         "doc": {
2026-07-26T22:33:03.3386544Z           "complete": false,
2026-07-26T22:33:03.3386640Z           "evidence": []
2026-07-26T22:33:03.3386720Z         },
2026-07-26T22:33:03.3386800Z         "impl": {
2026-07-26T22:33:03.3386888Z           "complete": false,
2026-07-26T22:33:03.3386983Z           "evidence": []
2026-07-26T22:33:03.3387064Z         },
2026-07-26T22:33:03.3387140Z         "int": {
2026-07-26T22:33:03.3387226Z           "complete": false,
2026-07-26T22:33:03.3387321Z           "evidence": []
2026-07-26T22:33:03.3387402Z         },
2026-07-26T22:33:03.3387488Z         "unit": {
2026-07-26T22:33:03.3387575Z           "complete": false,
2026-07-26T22:33:03.3387668Z           "evidence": []
2026-07-26T22:33:03.3387749Z         }
2026-07-26T22:33:03.3387837Z       }
2026-07-26T22:33:03.3387922Z     },
2026-07-26T22:33:03.3388007Z     {
2026-07-26T22:33:03.3388099Z       "id": "REQ-TRANSLATE-COMMAND",
2026-07-26T22:33:03.3391529Z       "title": "`[message-idle-translation-binary]` accepts a `command` (opaque; args + ADAPTER-STATIC {adapter_dir}/{adapter_name} substitution ONLY — ratified v0.16.0 W1, NOT session {key}: the translation binary is a persistent process serving all sessions on the endpoint (session/event ctx arrives per-message via the stdin Init/Event protocol, never the spawn argv) and the live-update respawn site has no session ctx (a {id}-bearing command would MissingKey→spool); program token resolved against install_dir like [digest].extractor/[session.psyche_init]) in addition to the bare `path`. `path` is DEPRECATED — keeps parsing (manifest forward/back-compat) but emits a registration warning steering to command. Exactly one of {path, command} (both-set refused at registration; neither = no translation binary). The spawn lifecycle + stdin/stdout JSON-lines protocol (Init/Event/Input → key/text/delay_ms/commit) are UNCHANGED — command alters only how the executable+args are located/launched (read_translation_path → read_translation_command). Unblocks folding `claude-spt translate` into the one consolidated binary (downstream ADR-0006). (v0.16.0)",
2026-07-26T22:33:03.3391702Z       "requiredStages": [
2026-07-26T22:33:03.3391782Z         "doc",
2026-07-26T22:33:03.3391867Z         "impl",
2026-07-26T22:33:03.3391958Z         "unit"
2026-07-26T22:33:03.3392045Z       ],
2026-07-26T22:33:03.3392131Z       "stages": {
2026-07-26T22:33:03.3392215Z         "doc": {
2026-07-26T22:33:03.3392307Z           "complete": true,
2026-07-26T22:33:03.3392379Z           "evidence": [
2026-07-26T22:33:03.3392464Z             {
2026-07-26T22:33:03.3392564Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.3392656Z               "line": 358
2026-07-26T22:33:03.3392736Z             },
2026-07-26T22:33:03.3392812Z             {
2026-07-26T22:33:03.3392980Z               "path": "docs/adr/0029-adapter-update-arc-resolve-not-execute.md",
2026-07-26T22:33:03.3393069Z               "line": 3
2026-07-26T22:33:03.3393150Z             }
2026-07-26T22:33:03.3393227Z           ]
2026-07-26T22:33:03.3393365Z         },
2026-07-26T22:33:03.3393456Z         "impl": {
2026-07-26T22:33:03.3393542Z           "complete": true,
2026-07-26T22:33:03.3393629Z           "evidence": [
2026-07-26T22:33:03.3393703Z             {
2026-07-26T22:33:03.3393817Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3393960Z               "line": 3079
2026-07-26T22:33:03.3394060Z             },
2026-07-26T22:33:03.3394136Z             {
2026-07-26T22:33:03.3394271Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.3394352Z               "line": 180
2026-07-26T22:33:03.3394437Z             },
2026-07-26T22:33:03.3394518Z             {
2026-07-26T22:33:03.3394642Z               "path": "crates/spt-daemon/src/translation.rs",
2026-07-26T22:33:03.3394723Z               "line": 243
2026-07-26T22:33:03.3394803Z             },
2026-07-26T22:33:03.3394947Z             {
2026-07-26T22:33:03.3395071Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.3395162Z               "line": 484
2026-07-26T22:33:03.3395234Z             },
2026-07-26T22:33:03.3395309Z             {
2026-07-26T22:33:03.3395433Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.3395511Z               "line": 492
2026-07-26T22:33:03.3395591Z             },
2026-07-26T22:33:03.3395676Z             {
2026-07-26T22:33:03.3395796Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.3395878Z               "line": 1060
2026-07-26T22:33:03.3395962Z             },
2026-07-26T22:33:03.3396038Z             {
2026-07-26T22:33:03.3396152Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.3396233Z               "line": 336
2026-07-26T22:33:03.3396312Z             },
2026-07-26T22:33:03.3396402Z             {
2026-07-26T22:33:03.3396512Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-07-26T22:33:03.3396609Z               "line": 520
2026-07-26T22:33:03.3396688Z             },
2026-07-26T22:33:03.3396770Z             {
2026-07-26T22:33:03.3396871Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3396966Z               "line": 11695
2026-07-26T22:33:03.3397036Z             }
2026-07-26T22:33:03.3397128Z           ]
2026-07-26T22:33:03.3397209Z         },
2026-07-26T22:33:03.3397289Z         "int": {
2026-07-26T22:33:03.3397370Z           "complete": false,
2026-07-26T22:33:03.3397467Z           "evidence": []
2026-07-26T22:33:03.3397543Z         },
2026-07-26T22:33:03.3397633Z         "unit": {
2026-07-26T22:33:03.3397719Z           "complete": true,
2026-07-26T22:33:03.3397810Z           "evidence": [
2026-07-26T22:33:03.3397895Z             {
2026-07-26T22:33:03.3398014Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3398101Z               "line": 8919
2026-07-26T22:33:03.3398196Z             },
2026-07-26T22:33:03.3398277Z             {
2026-07-26T22:33:03.3398444Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.3398524Z               "line": 472
2026-07-26T22:33:03.3398620Z             },
2026-07-26T22:33:03.3398692Z             {
2026-07-26T22:33:03.3398821Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-07-26T22:33:03.3398900Z               "line": 544
2026-07-26T22:33:03.3399053Z             },
2026-07-26T22:33:03.3399138Z             {
2026-07-26T22:33:03.3399250Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.3399337Z               "line": 1590
2026-07-26T22:33:03.3399424Z             }
2026-07-26T22:33:03.3399499Z           ]
2026-07-26T22:33:03.3399589Z         }
2026-07-26T22:33:03.3399661Z       }
2026-07-26T22:33:03.3399752Z     },
2026-07-26T22:33:03.3399828Z     {
2026-07-26T22:33:03.3399952Z       "id": "REQ-TRANSLATE-COMMIT-MISS-TOLERANCE",
2026-07-26T22:33:03.3402853Z       "title": "C-1 (F029, B6 ROOT — rescope of REQ-TRANSLATE-BINARY-LIVENESS-DECAY, now PINNED): at a checkpoint clear boundary the clear-only inject drives `/clear`; its `{commit}` is never observed within INJECT_COMMIT_DEADLINE (5s, broker.rs:158) so the inject worker FAULTS + TERMINATES a HEALTHY translate binary (broker.rs respool_and_fault + return) and by ADR-0022 design NEVER respawns → every subsequent force-native reports delivered=false ('no live translation binary', cli.rs:5046) = B6's exact field signature; the v0.12.0 checkpoint post-clear WAKE dies with the terminated binary + the fire-and-forget FIRE in the dead window. NOT a race — deterministic at every checkpoint-armed boundary (perri captured-stderr proof: TRANSLATION_FAULT on the F-019 unread daemon-stderr channel). FIX (REVISED, supersedes terminate-then-respawn): miss != fault — preserve the binary; the watchdog's job is ANTI-STALL (release the operator floor), not execution-verification. See addendum C-1 + ADR-0022 amendment.",
2026-07-26T22:33:03.3403071Z       "requiredStages": [
2026-07-26T22:33:03.3403211Z         "impl",
2026-07-26T22:33:03.3403286Z         "unit",
2026-07-26T22:33:03.3403372Z         "int"
2026-07-26T22:33:03.3403458Z       ],
2026-07-26T22:33:03.3403550Z       "stages": {
2026-07-26T22:33:03.3403625Z         "doc": {
2026-07-26T22:33:03.3403710Z           "complete": true,
2026-07-26T22:33:03.3403792Z           "evidence": [
2026-07-26T22:33:03.3403874Z             {
2026-07-26T22:33:03.3404063Z               "path": "docs/adr/0022-spt-hosted-idle-delivery-translation-binary.md",
2026-07-26T22:33:03.3404146Z               "line": 154
2026-07-26T22:33:03.3404236Z             }
2026-07-26T22:33:03.3404315Z           ]
2026-07-26T22:33:03.3404396Z         },
2026-07-26T22:33:03.3404482Z         "impl": {
2026-07-26T22:33:03.3404583Z           "complete": true,
2026-07-26T22:33:03.3404663Z           "evidence": [
2026-07-26T22:33:03.3404749Z             {
2026-07-26T22:33:03.3404859Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3404954Z               "line": 3327
2026-07-26T22:33:03.3405040Z             },
2026-07-26T22:33:03.3405132Z             {
2026-07-26T22:33:03.3405246Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3405335Z               "line": 3552
2026-07-26T22:33:03.3405412Z             }
2026-07-26T22:33:03.3405498Z           ]
2026-07-26T22:33:03.3405574Z         },
2026-07-26T22:33:03.3405655Z         "int": {
2026-07-26T22:33:03.3405741Z           "complete": true,
2026-07-26T22:33:03.3405832Z           "evidence": [
2026-07-26T22:33:03.3405908Z             {
2026-07-26T22:33:03.3406061Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.3406137Z               "line": 1746
2026-07-26T22:33:03.3406227Z             },
2026-07-26T22:33:03.3406308Z             {
2026-07-26T22:33:03.3406443Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.3406527Z               "line": 1862
2026-07-26T22:33:03.3406607Z             }
2026-07-26T22:33:03.3406746Z           ]
2026-07-26T22:33:03.3406821Z         },
2026-07-26T22:33:03.3406896Z         "unit": {
2026-07-26T22:33:03.3406986Z           "complete": true,
2026-07-26T22:33:03.3407068Z           "evidence": [
2026-07-26T22:33:03.3407150Z             {
2026-07-26T22:33:03.3407267Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3407354Z               "line": 7730
2026-07-26T22:33:03.3407431Z             },
2026-07-26T22:33:03.3407511Z             {
2026-07-26T22:33:03.3407625Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3407712Z               "line": 7753
2026-07-26T22:33:03.3407798Z             }
2026-07-26T22:33:03.3407883Z           ]
2026-07-26T22:33:03.3407964Z         }
2026-07-26T22:33:03.3408046Z       }
2026-07-26T22:33:03.3408127Z     },
2026-07-26T22:33:03.3408202Z     {
2026-07-26T22:33:03.3408279Z       "id": "REQ-UPD-1",
2026-07-26T22:33:03.3408403Z       "title": "Peer-propagated update over P2P",
2026-07-26T22:33:03.3408493Z       "requiredStages": [
2026-07-26T22:33:03.3408574Z         "impl",
2026-07-26T22:33:03.3408657Z         "unit",
2026-07-26T22:33:03.3408784Z         "int"
2026-07-26T22:33:03.3408865Z       ],
2026-07-26T22:33:03.3409033Z       "stages": {
2026-07-26T22:33:03.3409127Z         "doc": {
2026-07-26T22:33:03.3409209Z           "complete": false,
2026-07-26T22:33:03.3409301Z           "evidence": []
2026-07-26T22:33:03.3409437Z         },
2026-07-26T22:33:03.3409517Z         "impl": {
2026-07-26T22:33:03.3409609Z           "complete": true,
2026-07-26T22:33:03.3409702Z           "evidence": [
2026-07-26T22:33:03.3409782Z             {
2026-07-26T22:33:03.3409911Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.3409988Z               "line": 28
2026-07-26T22:33:03.3410069Z             },
2026-07-26T22:33:03.3410149Z             {
2026-07-26T22:33:03.3410269Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.3410355Z               "line": 104
2026-07-26T22:33:03.3410492Z             },
2026-07-26T22:33:03.3410570Z             {
2026-07-26T22:33:03.3410689Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.3410783Z               "line": 343
2026-07-26T22:33:03.3410870Z             },
2026-07-26T22:33:03.3410951Z             {
2026-07-26T22:33:03.3411075Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3411160Z               "line": 22
2026-07-26T22:33:03.3411238Z             },
2026-07-26T22:33:03.3411318Z             {
2026-07-26T22:33:03.3411442Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3411533Z               "line": 212
2026-07-26T22:33:03.3411623Z             },
2026-07-26T22:33:03.3411704Z             {
2026-07-26T22:33:03.3411829Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3411920Z               "line": 320
2026-07-26T22:33:03.3411999Z             },
2026-07-26T22:33:03.3412079Z             {
2026-07-26T22:33:03.3412203Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3412288Z               "line": 377
2026-07-26T22:33:03.3412377Z             },
2026-07-26T22:33:03.3412449Z             {
2026-07-26T22:33:03.3412569Z               "path": "crates/spt-net/src/net/update.rs",
2026-07-26T22:33:03.3412650Z               "line": 37
2026-07-26T22:33:03.3412740Z             }
2026-07-26T22:33:03.3412822Z           ]
2026-07-26T22:33:03.3412907Z         },
2026-07-26T22:33:03.3412983Z         "int": {
2026-07-26T22:33:03.3413083Z           "complete": true,
2026-07-26T22:33:03.3413170Z           "evidence": [
2026-07-26T22:33:03.3413251Z             {
2026-07-26T22:33:03.3413374Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-07-26T22:33:03.3413461Z               "line": 208
2026-07-26T22:33:03.3413541Z             },
2026-07-26T22:33:03.3413618Z             {
2026-07-26T22:33:03.3413742Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-07-26T22:33:03.3413879Z               "line": 1237
2026-07-26T22:33:03.3413960Z             }
2026-07-26T22:33:03.3414042Z           ]
2026-07-26T22:33:03.3414134Z         },
2026-07-26T22:33:03.3414208Z         "unit": {
2026-07-26T22:33:03.3414309Z           "complete": true,
2026-07-26T22:33:03.3414382Z           "evidence": [
2026-07-26T22:33:03.3414472Z             {
2026-07-26T22:33:03.3414586Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3414682Z               "line": 558
2026-07-26T22:33:03.3414758Z             },
2026-07-26T22:33:03.3414843Z             {
2026-07-26T22:33:03.3414961Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3415057Z               "line": 684
2026-07-26T22:33:03.3415129Z             },
2026-07-26T22:33:03.3415214Z             {
2026-07-26T22:33:03.3415338Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-07-26T22:33:03.3415429Z               "line": 371
2026-07-26T22:33:03.3415510Z             },
2026-07-26T22:33:03.3415595Z             {
2026-07-26T22:33:03.3415706Z               "path": "crates/spt-net/src/net/update.rs",
2026-07-26T22:33:03.3415857Z               "line": 124
2026-07-26T22:33:03.3415938Z             },
2026-07-26T22:33:03.3416021Z             {
2026-07-26T22:33:03.3416124Z               "path": "crates/spt-net/src/net/update.rs",
2026-07-26T22:33:03.3416219Z               "line": 200
2026-07-26T22:33:03.3416330Z             }
2026-07-26T22:33:03.3416411Z           ]
2026-07-26T22:33:03.3416482Z         }
2026-07-26T22:33:03.3416568Z       }
2026-07-26T22:33:03.3416645Z     },
2026-07-26T22:33:03.3416721Z     {
2026-07-26T22:33:03.3416811Z       "id": "REQ-UPD-2",
2026-07-26T22:33:03.3416945Z       "title": "All binaries signature-verified before handoff",
2026-07-26T22:33:03.3417040Z       "requiredStages": [
2026-07-26T22:33:03.3417125Z         "impl",
2026-07-26T22:33:03.3417201Z         "unit"
2026-07-26T22:33:03.3417292Z       ],
2026-07-26T22:33:03.3417376Z       "stages": {
2026-07-26T22:33:03.3417508Z         "doc": {
2026-07-26T22:33:03.3417599Z           "complete": false,
2026-07-26T22:33:03.3417696Z           "evidence": []
2026-07-26T22:33:03.3417785Z         },
2026-07-26T22:33:03.3417876Z         "impl": {
2026-07-26T22:33:03.3417967Z           "complete": true,
2026-07-26T22:33:03.3418057Z           "evidence": [
2026-07-26T22:33:03.3418133Z             {
2026-07-26T22:33:03.3418244Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.3418334Z               "line": 344
2026-07-26T22:33:03.3418409Z             },
2026-07-26T22:33:03.3418490Z             {
2026-07-26T22:33:03.3418606Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.3418701Z               "line": 511
2026-07-26T22:33:03.3418782Z             },
2026-07-26T22:33:03.3418858Z             {
2026-07-26T22:33:03.3419063Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3419159Z               "line": 29
2026-07-26T22:33:03.3419236Z             },
2026-07-26T22:33:03.3419325Z             {
2026-07-26T22:33:03.3419449Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3419546Z               "line": 358
2026-07-26T22:33:03.3419621Z             },
2026-07-26T22:33:03.3419707Z             {
2026-07-26T22:33:03.3419813Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3419913Z               "line": 375
2026-07-26T22:33:03.3419993Z             },
2026-07-26T22:33:03.3420077Z             {
2026-07-26T22:33:03.3420188Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3420281Z               "line": 495
2026-07-26T22:33:03.3420357Z             },
2026-07-26T22:33:03.3420433Z             {
2026-07-26T22:33:03.3420539Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3420629Z               "line": 645
2026-07-26T22:33:03.3420714Z             },
2026-07-26T22:33:03.3420796Z             {
2026-07-26T22:33:03.3420910Z               "path": "crates/spt-daemon/src/update.rs",
2026-07-26T22:33:03.3421067Z               "line": 155
2026-07-26T22:33:03.3421149Z             }
2026-07-26T22:33:03.3421230Z           ]
2026-07-26T22:33:03.3421315Z         },
2026-07-26T22:33:03.3421397Z         "int": {
2026-07-26T22:33:03.3421478Z           "complete": false,
2026-07-26T22:33:03.3421573Z           "evidence": []
2026-07-26T22:33:03.3421649Z         },
2026-07-26T22:33:03.3421735Z         "unit": {
2026-07-26T22:33:03.3421831Z           "complete": true,
2026-07-26T22:33:03.3421925Z           "evidence": [
2026-07-26T22:33:03.3422006Z             {
2026-07-26T22:33:03.3422122Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3422216Z               "line": 945
2026-07-26T22:33:03.3422297Z             },
2026-07-26T22:33:03.3422385Z             {
2026-07-26T22:33:03.3422531Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3422621Z               "line": 1006
2026-07-26T22:33:03.3422697Z             },
2026-07-26T22:33:03.3422792Z             {
2026-07-26T22:33:03.3422909Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3423057Z               "line": 1020
2026-07-26T22:33:03.3423139Z             },
2026-07-26T22:33:03.3423224Z             {
2026-07-26T22:33:03.3423338Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3423435Z               "line": 1036
2026-07-26T22:33:03.3423581Z             },
2026-07-26T22:33:03.3423663Z             {
2026-07-26T22:33:03.3423768Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3423863Z               "line": 1127
2026-07-26T22:33:03.3423953Z             },
2026-07-26T22:33:03.3424040Z             {
2026-07-26T22:33:03.3424159Z               "path": "crates/spt-daemon/src/update.rs",
2026-07-26T22:33:03.3424259Z               "line": 415
2026-07-26T22:33:03.3424336Z             },
2026-07-26T22:33:03.3424412Z             {
2026-07-26T22:33:03.3424530Z               "path": "crates/spt-daemon/src/update.rs",
2026-07-26T22:33:03.3424679Z               "line": 428
2026-07-26T22:33:03.3424759Z             },
2026-07-26T22:33:03.3424840Z             {
2026-07-26T22:33:03.3424975Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-07-26T22:33:03.3425065Z               "line": 504
2026-07-26T22:33:03.3425151Z             }
2026-07-26T22:33:03.3425227Z           ]
2026-07-26T22:33:03.3425309Z         }
2026-07-26T22:33:03.3425398Z       }
2026-07-26T22:33:03.3425478Z     },
2026-07-26T22:33:03.3425559Z     {
2026-07-26T22:33:03.3425651Z       "id": "REQ-UPD-3",
2026-07-26T22:33:03.3425831Z       "title": "No endpoint process terminates/suspends during self-update",
2026-07-26T22:33:03.3425931Z       "requiredStages": [
2026-07-26T22:33:03.3426012Z         "impl",
2026-07-26T22:33:03.3426098Z         "unit",
2026-07-26T22:33:03.3426188Z         "int"
2026-07-26T22:33:03.3426256Z       ],
2026-07-26T22:33:03.3426341Z       "stages": {
2026-07-26T22:33:03.3426417Z         "doc": {
2026-07-26T22:33:03.3426527Z           "complete": false,
2026-07-26T22:33:03.3426619Z           "evidence": []
2026-07-26T22:33:03.3426704Z         },
2026-07-26T22:33:03.3426794Z         "impl": {
2026-07-26T22:33:03.3426890Z           "complete": true,
2026-07-26T22:33:03.3426971Z           "evidence": [
2026-07-26T22:33:03.3427061Z             {
2026-07-26T22:33:03.3427182Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3427281Z               "line": 40
2026-07-26T22:33:03.3427356Z             },
2026-07-26T22:33:03.3427438Z             {
2026-07-26T22:33:03.3427559Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3427642Z               "line": 301
2026-07-26T22:33:03.3427723Z             },
2026-07-26T22:33:03.3427804Z             {
2026-07-26T22:33:03.3427927Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.3428016Z               "line": 1741
2026-07-26T22:33:03.3428106Z             },
2026-07-26T22:33:03.3428193Z             {
2026-07-26T22:33:03.3428364Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3428455Z               "line": 5362
2026-07-26T22:33:03.3428546Z             },
2026-07-26T22:33:03.3428627Z             {
2026-07-26T22:33:03.3428740Z               "path": "crates/spt-daemon/src/update.rs",
2026-07-26T22:33:03.3428823Z               "line": 26
2026-07-26T22:33:03.3428908Z             },
2026-07-26T22:33:03.3429060Z             {
2026-07-26T22:33:03.3429185Z               "path": "crates/spt-daemon/src/update.rs",
2026-07-26T22:33:03.3429275Z               "line": 114
2026-07-26T22:33:03.3429370Z             },
2026-07-26T22:33:03.3429453Z             {
2026-07-26T22:33:03.3429561Z               "path": "crates/spt-daemon/src/update.rs",
2026-07-26T22:33:03.3429652Z               "line": 246
2026-07-26T22:33:03.3429738Z             },
2026-07-26T22:33:03.3429815Z             {
2026-07-26T22:33:03.3429914Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3429995Z               "line": 5373
2026-07-26T22:33:03.3430087Z             }
2026-07-26T22:33:03.3430162Z           ]
2026-07-26T22:33:03.3430296Z         },
2026-07-26T22:33:03.3430378Z         "int": {
2026-07-26T22:33:03.3430477Z           "complete": true,
2026-07-26T22:33:03.3430562Z           "evidence": [
2026-07-26T22:33:03.3430642Z             {
2026-07-26T22:33:03.3430762Z               "path": "crates/spt/tests/brain_survive.rs",
2026-07-26T22:33:03.3430903Z               "line": 58
2026-07-26T22:33:03.3430983Z             }
2026-07-26T22:33:03.3431065Z           ]
2026-07-26T22:33:03.3431137Z         },
2026-07-26T22:33:03.3431213Z         "unit": {
2026-07-26T22:33:03.3431303Z           "complete": true,
2026-07-26T22:33:03.3431394Z           "evidence": [
2026-07-26T22:33:03.3431480Z             {
2026-07-26T22:33:03.3431607Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3431695Z               "line": 791
2026-07-26T22:33:03.3431785Z             },
2026-07-26T22:33:03.3431932Z             {
2026-07-26T22:33:03.3432052Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3432147Z               "line": 876
2026-07-26T22:33:03.3432223Z             },
2026-07-26T22:33:03.3432295Z             {
2026-07-26T22:33:03.3432414Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3432505Z               "line": 1033
2026-07-26T22:33:03.3432581Z             },
2026-07-26T22:33:03.3432663Z             {
2026-07-26T22:33:03.3432771Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:03.3432867Z               "line": 1273
2026-07-26T22:33:03.3432945Z             },
2026-07-26T22:33:03.3433030Z             {
2026-07-26T22:33:03.3433138Z               "path": "crates/spt-daemon/src/update.rs",
2026-07-26T22:33:03.3433228Z               "line": 271
2026-07-26T22:33:03.3433305Z             },
2026-07-26T22:33:03.3433394Z             {
2026-07-26T22:33:03.3433507Z               "path": "crates/spt-daemon/src/update.rs",
2026-07-26T22:33:03.3433603Z               "line": 295
2026-07-26T22:33:03.3433685Z             },
2026-07-26T22:33:03.3433770Z             {
2026-07-26T22:33:03.3433879Z               "path": "crates/spt-daemon/src/update.rs",
2026-07-26T22:33:03.3433976Z               "line": 316
2026-07-26T22:33:03.3434057Z             },
2026-07-26T22:33:03.3434136Z             {
2026-07-26T22:33:03.3434252Z               "path": "crates/spt-daemon/src/update.rs",
2026-07-26T22:33:03.3434347Z               "line": 332
2026-07-26T22:33:03.3434432Z             }
2026-07-26T22:33:03.3434518Z           ]
2026-07-26T22:33:03.3434600Z         }
2026-07-26T22:33:03.3434680Z       }
2026-07-26T22:33:03.3434761Z     },
2026-07-26T22:33:03.3434847Z     {
2026-07-26T22:33:03.3434934Z       "id": "REQ-UPD-4",
2026-07-26T22:33:03.3435119Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-07-26T22:33:03.3435206Z       "requiredStages": [
2026-07-26T22:33:03.3435300Z         "impl",
2026-07-26T22:33:03.3435438Z         "unit"
2026-07-26T22:33:03.3435521Z       ],
2026-07-26T22:33:03.3435597Z       "stages": {
2026-07-26T22:33:03.3435691Z         "doc": {
2026-07-26T22:33:03.3435783Z           "complete": false,
2026-07-26T22:33:03.3435874Z           "evidence": []
2026-07-26T22:33:03.3435958Z         },
2026-07-26T22:33:03.3436048Z         "impl": {
2026-07-26T22:33:03.3436129Z           "complete": true,
2026-07-26T22:33:03.3436220Z           "evidence": [
2026-07-26T22:33:03.3436292Z             {
2026-07-26T22:33:03.3436420Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3436516Z               "line": 41
2026-07-26T22:33:03.3436597Z             },
2026-07-26T22:33:03.3436681Z             {
2026-07-26T22:33:03.3436797Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3436887Z               "line": 125
2026-07-26T22:33:03.3436969Z             },
2026-07-26T22:33:03.3437044Z             {
2026-07-26T22:33:03.3437169Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3437259Z               "line": 302
2026-07-26T22:33:03.3437335Z             },
2026-07-26T22:33:03.3437460Z             {
2026-07-26T22:33:03.3437578Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3437678Z               "line": 383
2026-07-26T22:33:03.3437761Z             },
2026-07-26T22:33:03.3437846Z             {
2026-07-26T22:33:03.3438013Z               "path": "crates/spt-daemon/src/consent.rs",
2026-07-26T22:33:03.3438104Z               "line": 23
2026-07-26T22:33:03.3438189Z             },
2026-07-26T22:33:03.3438274Z             {
2026-07-26T22:33:03.3438388Z               "path": "crates/spt-daemon/src/consent.rs",
2026-07-26T22:33:03.3438469Z               "line": 56
2026-07-26T22:33:03.3438548Z             },
2026-07-26T22:33:03.3438629Z             {
2026-07-26T22:33:03.3438744Z               "path": "crates/spt-daemon/src/consent.rs",
2026-07-26T22:33:03.3438840Z               "line": 77
2026-07-26T22:33:03.3439025Z             },
2026-07-26T22:33:03.3439111Z             {
2026-07-26T22:33:03.3439215Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-07-26T22:33:03.3439315Z               "line": 584
2026-07-26T22:33:03.3439393Z             },
2026-07-26T22:33:03.3439473Z             {
2026-07-26T22:33:03.3439592Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.3439693Z               "line": 119
2026-07-26T22:33:03.3439773Z             },
2026-07-26T22:33:03.3439854Z             {
2026-07-26T22:33:03.3439959Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.3440051Z               "line": 350
2026-07-26T22:33:03.3440136Z             },
2026-07-26T22:33:03.3440221Z             {
2026-07-26T22:33:03.3440318Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3440408Z               "line": 5372
2026-07-26T22:33:03.3440503Z             }
2026-07-26T22:33:03.3440579Z           ]
2026-07-26T22:33:03.3440662Z         },
2026-07-26T22:33:03.3440741Z         "int": {
2026-07-26T22:33:03.3440846Z           "complete": false,
2026-07-26T22:33:03.3440929Z           "evidence": []
2026-07-26T22:33:03.3441024Z         },
2026-07-26T22:33:03.3441093Z         "unit": {
2026-07-26T22:33:03.3441193Z           "complete": true,
2026-07-26T22:33:03.3441279Z           "evidence": [
2026-07-26T22:33:03.3441359Z             {
2026-07-26T22:33:03.3441482Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3441568Z               "line": 872
2026-07-26T22:33:03.3441644Z             },
2026-07-26T22:33:03.3441735Z             {
2026-07-26T22:33:03.3441848Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3441950Z               "line": 1086
2026-07-26T22:33:03.3442031Z             },
2026-07-26T22:33:03.3442111Z             {
2026-07-26T22:33:03.3442226Z               "path": "crates/spt-daemon/src/config.rs",
2026-07-26T22:33:03.3442312Z               "line": 471
2026-07-26T22:33:03.3442393Z             },
2026-07-26T22:33:03.3442536Z             {
2026-07-26T22:33:03.3442655Z               "path": "crates/spt-daemon/src/consent.rs",
2026-07-26T22:33:03.3446290Z               "line": 102
2026-07-26T22:33:03.3446396Z             },
2026-07-26T22:33:03.3446486Z             {
2026-07-26T22:33:03.3446622Z               "path": "crates/spt-daemon/src/consent.rs",
2026-07-26T22:33:03.3446718Z               "line": 123
2026-07-26T22:33:03.3446799Z             },
2026-07-26T22:33:03.3446890Z             {
2026-07-26T22:33:03.3447013Z               "path": "crates/spt-daemon/src/consent.rs",
2026-07-26T22:33:03.3447105Z               "line": 142
2026-07-26T22:33:03.3447186Z             },
2026-07-26T22:33:03.3447265Z             {
2026-07-26T22:33:03.3447376Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.3447476Z               "line": 931
2026-07-26T22:33:03.3447552Z             },
2026-07-26T22:33:03.3447633Z             {
2026-07-26T22:33:03.3447753Z               "path": "crates/spt-store/src/perch.rs",
2026-07-26T22:33:03.3447839Z               "line": 699
2026-07-26T22:33:03.3447919Z             },
2026-07-26T22:33:03.3448101Z             {
2026-07-26T22:33:03.3448205Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3448297Z               "line": 15801
2026-07-26T22:33:03.3448378Z             }
2026-07-26T22:33:03.3448453Z           ]
2026-07-26T22:33:03.3448587Z         }
2026-07-26T22:33:03.3448679Z       }
2026-07-26T22:33:03.3448754Z     },
2026-07-26T22:33:03.3448824Z     {
2026-07-26T22:33:03.3448909Z       "id": "REQ-UPD-5",
2026-07-26T22:33:03.3449141Z       "title": "spt-core ripple-updates registered adapters",
2026-07-26T22:33:03.3449236Z       "requiredStages": [
2026-07-26T22:33:03.3449318Z         "impl",
2026-07-26T22:33:03.3449400Z         "unit"
2026-07-26T22:33:03.3449479Z       ],
2026-07-26T22:33:03.3449561Z       "stages": {
2026-07-26T22:33:03.3449638Z         "doc": {
2026-07-26T22:33:03.3449738Z           "complete": false,
2026-07-26T22:33:03.3449880Z           "evidence": []
2026-07-26T22:33:03.3449967Z         },
2026-07-26T22:33:03.3450043Z         "impl": {
2026-07-26T22:33:03.3450137Z           "complete": true,
2026-07-26T22:33:03.3450225Z           "evidence": [
2026-07-26T22:33:03.3450301Z             {
2026-07-26T22:33:03.3450428Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-07-26T22:33:03.3450519Z               "line": 27
2026-07-26T22:33:03.3450606Z             },
2026-07-26T22:33:03.3450681Z             {
2026-07-26T22:33:03.3450810Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-07-26T22:33:03.3450897Z               "line": 87
2026-07-26T22:33:03.3450977Z             },
2026-07-26T22:33:03.3451058Z             {
2026-07-26T22:33:03.3451179Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-07-26T22:33:03.3451269Z               "line": 145
2026-07-26T22:33:03.3451344Z             },
2026-07-26T22:33:03.3451430Z             {
2026-07-26T22:33:03.3451551Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3451640Z               "line": 579
2026-07-26T22:33:03.3451715Z             },
2026-07-26T22:33:03.3451796Z             {
2026-07-26T22:33:03.3451906Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3451999Z               "line": 633
2026-07-26T22:33:03.3452070Z             }
2026-07-26T22:33:03.3452161Z           ]
2026-07-26T22:33:03.3452238Z         },
2026-07-26T22:33:03.3452318Z         "int": {
2026-07-26T22:33:03.3452404Z           "complete": false,
2026-07-26T22:33:03.3452496Z           "evidence": []
2026-07-26T22:33:03.3452581Z         },
2026-07-26T22:33:03.3452666Z         "unit": {
2026-07-26T22:33:03.3452757Z           "complete": true,
2026-07-26T22:33:03.3452844Z           "evidence": [
2026-07-26T22:33:03.3452925Z             {
2026-07-26T22:33:03.3453052Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-07-26T22:33:03.3453130Z               "line": 278
2026-07-26T22:33:03.3453272Z             },
2026-07-26T22:33:03.3453353Z             {
2026-07-26T22:33:03.3453492Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-07-26T22:33:03.3453586Z               "line": 292
2026-07-26T22:33:03.3453673Z             },
2026-07-26T22:33:03.3453755Z             {
2026-07-26T22:33:03.3453882Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-07-26T22:33:03.3453968Z               "line": 306
2026-07-26T22:33:03.3454055Z             },
2026-07-26T22:33:03.3454141Z             {
2026-07-26T22:33:03.3454268Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-07-26T22:33:03.3454358Z               "line": 320
2026-07-26T22:33:03.3454430Z             },
2026-07-26T22:33:03.3454547Z             {
2026-07-26T22:33:03.3454752Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-07-26T22:33:03.3454900Z               "line": 354
2026-07-26T22:33:03.3455005Z             },
2026-07-26T22:33:03.3455138Z             {
2026-07-26T22:33:03.3455324Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.3455448Z               "line": 1377
2026-07-26T22:33:03.3455658Z             }
2026-07-26T22:33:03.3455796Z           ]
2026-07-26T22:33:03.3455901Z         }
2026-07-26T22:33:03.3456021Z       }
2026-07-26T22:33:03.3456130Z     },
2026-07-26T22:33:03.3456220Z     {
2026-07-26T22:33:03.3456317Z       "id": "REQ-UPD-6",
2026-07-26T22:33:03.3457540Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-07-26T22:33:03.3457655Z       "requiredStages": [
2026-07-26T22:33:03.3457746Z         "doc",
2026-07-26T22:33:03.3457830Z         "impl",
2026-07-26T22:33:03.3457918Z         "unit",
2026-07-26T22:33:03.3457998Z         "int"
2026-07-26T22:33:03.3458136Z       ],
2026-07-26T22:33:03.3458212Z       "stages": {
2026-07-26T22:33:03.3458289Z         "doc": {
2026-07-26T22:33:03.3458379Z           "complete": true,
2026-07-26T22:33:03.3458474Z           "evidence": [
2026-07-26T22:33:03.3458547Z             {
2026-07-26T22:33:03.3458670Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-07-26T22:33:03.3458761Z               "line": 3
2026-07-26T22:33:03.3458833Z             },
2026-07-26T22:33:03.3458914Z             {
2026-07-26T22:33:03.3459090Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-07-26T22:33:03.3459191Z               "line": 3
2026-07-26T22:33:03.3459276Z             },
2026-07-26T22:33:03.3459365Z             {
2026-07-26T22:33:03.3459518Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-07-26T22:33:03.3459608Z               "line": 3
2026-07-26T22:33:03.3459687Z             }
2026-07-26T22:33:03.3459768Z           ]
2026-07-26T22:33:03.3459849Z         },
2026-07-26T22:33:03.3459926Z         "impl": {
2026-07-26T22:33:03.3460025Z           "complete": true,
2026-07-26T22:33:03.3460102Z           "evidence": [
2026-07-26T22:33:03.3460183Z             {
2026-07-26T22:33:03.3460312Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3460388Z               "line": 85
2026-07-26T22:33:03.3460465Z             },
2026-07-26T22:33:03.3460542Z             {
2026-07-26T22:33:03.3460669Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3460760Z               "line": 253
2026-07-26T22:33:03.3460837Z             },
2026-07-26T22:33:03.3460913Z             {
2026-07-26T22:33:03.3461022Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3461104Z               "line": 279
2026-07-26T22:33:03.3461185Z             },
2026-07-26T22:33:03.3461266Z             {
2026-07-26T22:33:03.3461385Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.3461467Z               "line": 70
2026-07-26T22:33:03.3461552Z             },
2026-07-26T22:33:03.3461714Z             {
2026-07-26T22:33:03.3461890Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.3461976Z               "line": 134
2026-07-26T22:33:03.3462096Z             },
2026-07-26T22:33:03.3462228Z             {
2026-07-26T22:33:03.3462404Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.3462494Z               "line": 244
2026-07-26T22:33:03.3462573Z             },
2026-07-26T22:33:03.3462649Z             {
2026-07-26T22:33:03.3462803Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.3462907Z               "line": 441
2026-07-26T22:33:03.3462988Z             },
2026-07-26T22:33:03.3463066Z             {
2026-07-26T22:33:03.3463184Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.3463269Z               "line": 569
2026-07-26T22:33:03.3463351Z             },
2026-07-26T22:33:03.3463432Z             {
2026-07-26T22:33:03.3463550Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.3463646Z               "line": 583
2026-07-26T22:33:03.3463724Z             },
2026-07-26T22:33:03.3463870Z             {
2026-07-26T22:33:03.3463986Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.3464085Z               "line": 638
2026-07-26T22:33:03.3464161Z             },
2026-07-26T22:33:03.3464243Z             {
2026-07-26T22:33:03.3464395Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.3464480Z               "line": 669
2026-07-26T22:33:03.3464557Z             },
2026-07-26T22:33:03.3464644Z             {
2026-07-26T22:33:03.3464766Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-07-26T22:33:03.3464847Z               "line": 271
2026-07-26T22:33:03.3464928Z             },
2026-07-26T22:33:03.3465009Z             {
2026-07-26T22:33:03.3465126Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-07-26T22:33:03.3465216Z               "line": 318
2026-07-26T22:33:03.3465341Z             },
2026-07-26T22:33:03.3465422Z             {
2026-07-26T22:33:03.3465540Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3465637Z               "line": 83
2026-07-26T22:33:03.3465713Z             },
2026-07-26T22:33:03.3465793Z             {
2026-07-26T22:33:03.3465903Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3465999Z               "line": 119
2026-07-26T22:33:03.3466080Z             },
2026-07-26T22:33:03.3466160Z             {
2026-07-26T22:33:03.3466271Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3466356Z               "line": 190
2026-07-26T22:33:03.3466432Z             },
2026-07-26T22:33:03.3466513Z             {
2026-07-26T22:33:03.3466623Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3466704Z               "line": 265
2026-07-26T22:33:03.3466790Z             },
2026-07-26T22:33:03.3466867Z             {
2026-07-26T22:33:03.3466980Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3467062Z               "line": 329
2026-07-26T22:33:03.3467148Z             },
2026-07-26T22:33:03.3467230Z             {
2026-07-26T22:33:03.3467347Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3467434Z               "line": 360
2026-07-26T22:33:03.3467516Z             },
2026-07-26T22:33:03.3467596Z             {
2026-07-26T22:33:03.3467700Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3467795Z               "line": 383
2026-07-26T22:33:03.3467881Z             },
2026-07-26T22:33:03.3467963Z             {
2026-07-26T22:33:03.3468080Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3468167Z               "line": 425
2026-07-26T22:33:03.3468249Z             },
2026-07-26T22:33:03.3468329Z             {
2026-07-26T22:33:03.3468448Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3468535Z               "line": 435
2026-07-26T22:33:03.3468677Z             },
2026-07-26T22:33:03.3468749Z             {
2026-07-26T22:33:03.3468859Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3469030Z               "line": 447
2026-07-26T22:33:03.3469117Z             },
2026-07-26T22:33:03.3469188Z             {
2026-07-26T22:33:03.3469311Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3469398Z               "line": 457
2026-07-26T22:33:03.3469484Z             },
2026-07-26T22:33:03.3469559Z             {
2026-07-26T22:33:03.3469673Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3469756Z               "line": 476
2026-07-26T22:33:03.3469836Z             },
2026-07-26T22:33:03.3469916Z             {
2026-07-26T22:33:03.3470035Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3470111Z               "line": 486
2026-07-26T22:33:03.3470201Z             },
2026-07-26T22:33:03.3470276Z             {
2026-07-26T22:33:03.3470395Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3470477Z               "line": 94
2026-07-26T22:33:03.3470619Z             },
2026-07-26T22:33:03.3470700Z             {
2026-07-26T22:33:03.3470839Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3470924Z               "line": 120
2026-07-26T22:33:03.3470996Z             },
2026-07-26T22:33:03.3471130Z             {
2026-07-26T22:33:03.3471239Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3471364Z               "line": 135
2026-07-26T22:33:03.3471440Z             },
2026-07-26T22:33:03.3471545Z             {
2026-07-26T22:33:03.3471644Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3471731Z               "line": 181
2026-07-26T22:33:03.3471811Z             },
2026-07-26T22:33:03.3471892Z             {
2026-07-26T22:33:03.3472003Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3472144Z               "line": 193
2026-07-26T22:33:03.3472216Z             },
2026-07-26T22:33:03.3472304Z             {
2026-07-26T22:33:03.3472431Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3472550Z               "line": 264
2026-07-26T22:33:03.3472642Z             },
2026-07-26T22:33:03.3472723Z             {
2026-07-26T22:33:03.3472835Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3472931Z               "line": 538
2026-07-26T22:33:03.3473002Z             },
2026-07-26T22:33:03.3473091Z             {
2026-07-26T22:33:03.3473200Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3473291Z               "line": 682
2026-07-26T22:33:03.3473372Z             },
2026-07-26T22:33:03.3473453Z             {
2026-07-26T22:33:03.3473616Z               "path": "crates/spt-daemon/src/update.rs",
2026-07-26T22:33:03.3473749Z               "line": 171
2026-07-26T22:33:03.3473872Z             },
2026-07-26T22:33:03.3473992Z             {
2026-07-26T22:33:03.3474158Z               "path": "crates/spt-net/src/net/update.rs",
2026-07-26T22:33:03.3474245Z               "line": 65
2026-07-26T22:33:03.3474326Z             },
2026-07-26T22:33:03.3474407Z             {
2026-07-26T22:33:03.3474526Z               "path": "crates/spt-net/src/net/update.rs",
2026-07-26T22:33:03.3474641Z               "line": 71
2026-07-26T22:33:03.3474721Z             },
2026-07-26T22:33:03.3474803Z             {
2026-07-26T22:33:03.3474918Z               "path": "crates/spt-net/src/net/update.rs",
2026-07-26T22:33:03.3474998Z               "line": 77
2026-07-26T22:33:03.3475079Z             },
2026-07-26T22:33:03.3475166Z             {
2026-07-26T22:33:03.3475275Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.3475369Z               "line": 1140
2026-07-26T22:33:03.3475449Z             },
2026-07-26T22:33:03.3475526Z             {
2026-07-26T22:33:03.3475630Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.3475715Z               "line": 1157
2026-07-26T22:33:03.3475867Z             },
2026-07-26T22:33:03.3475949Z             {
2026-07-26T22:33:03.3476062Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.3476144Z               "line": 1200
2026-07-26T22:33:03.3476220Z             },
2026-07-26T22:33:03.3476301Z             {
2026-07-26T22:33:03.3476401Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.3476483Z               "line": 1344
2026-07-26T22:33:03.3476563Z             },
2026-07-26T22:33:03.3476640Z             {
2026-07-26T22:33:03.3476739Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.3476827Z               "line": 1494
2026-07-26T22:33:03.3476902Z             }
2026-07-26T22:33:03.3476973Z           ]
2026-07-26T22:33:03.3477049Z         },
2026-07-26T22:33:03.3477132Z         "int": {
2026-07-26T22:33:03.3477221Z           "complete": true,
2026-07-26T22:33:03.3477302Z           "evidence": [
2026-07-26T22:33:03.3477383Z             {
2026-07-26T22:33:03.3477513Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-07-26T22:33:03.3477608Z               "line": 663
2026-07-26T22:33:03.3477733Z             },
2026-07-26T22:33:03.3477818Z             {
2026-07-26T22:33:03.3477936Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-07-26T22:33:03.3478028Z               "line": 135
2026-07-26T22:33:03.3478110Z             }
2026-07-26T22:33:03.3478231Z           ]
2026-07-26T22:33:03.3478302Z         },
2026-07-26T22:33:03.3478393Z         "unit": {
2026-07-26T22:33:03.3478480Z           "complete": true,
2026-07-26T22:33:03.3478579Z           "evidence": [
2026-07-26T22:33:03.3478665Z             {
2026-07-26T22:33:03.3478785Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3478870Z               "line": 1006
2026-07-26T22:33:03.3479038Z             },
2026-07-26T22:33:03.3479109Z             {
2026-07-26T22:33:03.3479227Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3479414Z               "line": 1055
2026-07-26T22:33:03.3479500Z             },
2026-07-26T22:33:03.3479580Z             {
2026-07-26T22:33:03.3479706Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-07-26T22:33:03.3479795Z               "line": 731
2026-07-26T22:33:03.3479876Z             },
2026-07-26T22:33:03.3479958Z             {
2026-07-26T22:33:03.3480067Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3480167Z               "line": 581
2026-07-26T22:33:03.3480248Z             },
2026-07-26T22:33:03.3480331Z             {
2026-07-26T22:33:03.3480443Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3480543Z               "line": 706
2026-07-26T22:33:03.3480624Z             },
2026-07-26T22:33:03.3480714Z             {
2026-07-26T22:33:03.3480817Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3480917Z               "line": 743
2026-07-26T22:33:03.3481003Z             },
2026-07-26T22:33:03.3481080Z             {
2026-07-26T22:33:03.3481198Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3481285Z               "line": 1142
2026-07-26T22:33:03.3481362Z             },
2026-07-26T22:33:03.3481451Z             {
2026-07-26T22:33:03.3481561Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3481657Z               "line": 1164
2026-07-26T22:33:03.3481738Z             },
2026-07-26T22:33:03.3481818Z             {
2026-07-26T22:33:03.3481920Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3482010Z               "line": 1181
2026-07-26T22:33:03.3482090Z             },
2026-07-26T22:33:03.3482171Z             {
2026-07-26T22:33:03.3482267Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3482362Z               "line": 1196
2026-07-26T22:33:03.3482434Z             },
2026-07-26T22:33:03.3482524Z             {
2026-07-26T22:33:03.3482620Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3482805Z               "line": 1222
2026-07-26T22:33:03.3482892Z             },
2026-07-26T22:33:03.3482968Z             {
2026-07-26T22:33:03.3483087Z               "path": "crates/spt-daemon/src/update.rs",
2026-07-26T22:33:03.3483178Z               "line": 458
2026-07-26T22:33:03.3483245Z             },
2026-07-26T22:33:03.3483344Z             {
2026-07-26T22:33:03.3483457Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-07-26T22:33:03.3483557Z               "line": 432
2026-07-26T22:33:03.3483637Z             },
2026-07-26T22:33:03.3483717Z             {
2026-07-26T22:33:03.3483823Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3483900Z               "line": 18832
2026-07-26T22:33:03.3483990Z             },
2026-07-26T22:33:03.3484065Z             {
2026-07-26T22:33:03.3484166Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.3484247Z               "line": 1635
2026-07-26T22:33:03.3484333Z             },
2026-07-26T22:33:03.3484413Z             {
2026-07-26T22:33:03.3484534Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-07-26T22:33:03.3484615Z               "line": 130
2026-07-26T22:33:03.3484757Z             }
2026-07-26T22:33:03.3484839Z           ]
2026-07-26T22:33:03.3484928Z         }
2026-07-26T22:33:03.3485009Z       }
2026-07-26T22:33:03.3485091Z     },
2026-07-26T22:33:03.3485173Z     {
2026-07-26T22:33:03.3485315Z       "id": "REQ-UPD-7",
2026-07-26T22:33:03.3487443Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-07-26T22:33:03.3487605Z       "requiredStages": [
2026-07-26T22:33:03.3487697Z         "impl",
2026-07-26T22:33:03.3487781Z         "unit"
2026-07-26T22:33:03.3487867Z       ],
2026-07-26T22:33:03.3487953Z       "stages": {
2026-07-26T22:33:03.3488045Z         "doc": {
2026-07-26T22:33:03.3488138Z           "complete": false,
2026-07-26T22:33:03.3488235Z           "evidence": []
2026-07-26T22:33:03.3488312Z         },
2026-07-26T22:33:03.3488402Z         "impl": {
2026-07-26T22:33:03.3488482Z           "complete": true,
2026-07-26T22:33:03.3488578Z           "evidence": [
2026-07-26T22:33:03.3488660Z             {
2026-07-26T22:33:03.3488763Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3488849Z               "line": 6506
2026-07-26T22:33:03.3488930Z             }
2026-07-26T22:33:03.3489097Z           ]
2026-07-26T22:33:03.3489173Z         },
2026-07-26T22:33:03.3489263Z         "int": {
2026-07-26T22:33:03.3489373Z           "complete": false,
2026-07-26T22:33:03.3489454Z           "evidence": []
2026-07-26T22:33:03.3489534Z         },
2026-07-26T22:33:03.3489617Z         "unit": {
2026-07-26T22:33:03.3489717Z           "complete": true,
2026-07-26T22:33:03.3489792Z           "evidence": [
2026-07-26T22:33:03.3489874Z             {
2026-07-26T22:33:03.3489979Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3490074Z               "line": 18750
2026-07-26T22:33:03.3490145Z             }
2026-07-26T22:33:03.3490227Z           ]
2026-07-26T22:33:03.3490303Z         }
2026-07-26T22:33:03.3490384Z       }
2026-07-26T22:33:03.3490465Z     },
2026-07-26T22:33:03.3490557Z     {
2026-07-26T22:33:03.3490647Z       "id": "REQ-UPD-8",
2026-07-26T22:33:03.3493080Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-07-26T22:33:03.3493260Z       "requiredStages": [
2026-07-26T22:33:03.3493342Z         "impl",
2026-07-26T22:33:03.3493424Z         "unit"
2026-07-26T22:33:03.3493509Z       ],
2026-07-26T22:33:03.3493599Z       "stages": {
2026-07-26T22:33:03.3493685Z         "doc": {
2026-07-26T22:33:03.3493782Z           "complete": false,
2026-07-26T22:33:03.3493876Z           "evidence": []
2026-07-26T22:33:03.3493975Z         },
2026-07-26T22:33:03.3494056Z         "impl": {
2026-07-26T22:33:03.3494202Z           "complete": true,
2026-07-26T22:33:03.3494286Z           "evidence": [
2026-07-26T22:33:03.3494368Z             {
2026-07-26T22:33:03.3494493Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3494583Z               "line": 86
2026-07-26T22:33:03.3494702Z             },
2026-07-26T22:33:03.3494784Z             {
2026-07-26T22:33:03.3494897Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3494983Z               "line": 49
2026-07-26T22:33:03.3495060Z             },
2026-07-26T22:33:03.3495141Z             {
2026-07-26T22:33:03.3495259Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3495341Z               "line": 157
2026-07-26T22:33:03.3495418Z             },
2026-07-26T22:33:03.3495493Z             {
2026-07-26T22:33:03.3495603Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3495737Z               "line": 220
2026-07-26T22:33:03.3495822Z             },
2026-07-26T22:33:03.3495898Z             {
2026-07-26T22:33:03.3496019Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3496100Z               "line": 235
2026-07-26T22:33:03.3496185Z             },
2026-07-26T22:33:03.3496257Z             {
2026-07-26T22:33:03.3496372Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3496456Z               "line": 252
2026-07-26T22:33:03.3496537Z             },
2026-07-26T22:33:03.3496618Z             {
2026-07-26T22:33:03.3496736Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3496820Z               "line": 274
2026-07-26T22:33:03.3496901Z             },
2026-07-26T22:33:03.3496983Z             {
2026-07-26T22:33:03.3497103Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3497182Z               "line": 66
2026-07-26T22:33:03.3497279Z             },
2026-07-26T22:33:03.3497355Z             {
2026-07-26T22:33:03.3497473Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3497559Z               "line": 154
2026-07-26T22:33:03.3497642Z             },
2026-07-26T22:33:03.3497722Z             {
2026-07-26T22:33:03.3497826Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3497918Z               "line": 5232
2026-07-26T22:33:03.3498008Z             },
2026-07-26T22:33:03.3498089Z             {
2026-07-26T22:33:03.3498193Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3498281Z               "line": 5700
2026-07-26T22:33:03.3498370Z             },
2026-07-26T22:33:03.3498446Z             {
2026-07-26T22:33:03.3498552Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3498638Z               "line": 5710
2026-07-26T22:33:03.3498723Z             },
2026-07-26T22:33:03.3498804Z             {
2026-07-26T22:33:03.3498906Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3499138Z               "line": 6507
2026-07-26T22:33:03.3499225Z             },
2026-07-26T22:33:03.3499314Z             {
2026-07-26T22:33:03.3499432Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.3499513Z               "line": 777
2026-07-26T22:33:03.3499600Z             },
2026-07-26T22:33:03.3499676Z             {
2026-07-26T22:33:03.3499780Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.3499867Z               "line": 794
2026-07-26T22:33:03.3499943Z             }
2026-07-26T22:33:03.3500018Z           ]
2026-07-26T22:33:03.3500109Z         },
2026-07-26T22:33:03.3500187Z         "int": {
2026-07-26T22:33:03.3500287Z           "complete": false,
2026-07-26T22:33:03.3500371Z           "evidence": []
2026-07-26T22:33:03.3500448Z         },
2026-07-26T22:33:03.3500530Z         "unit": {
2026-07-26T22:33:03.3500625Z           "complete": true,
2026-07-26T22:33:03.3500720Z           "evidence": [
2026-07-26T22:33:03.3500802Z             {
2026-07-26T22:33:03.3500934Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3501015Z               "line": 732
2026-07-26T22:33:03.3501165Z             },
2026-07-26T22:33:03.3501235Z             {
2026-07-26T22:33:03.3501349Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-07-26T22:33:03.3501436Z               "line": 648
2026-07-26T22:33:03.3501521Z             },
2026-07-26T22:33:03.3501649Z             {
2026-07-26T22:33:03.3501744Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3501829Z               "line": 18832
2026-07-26T22:33:03.3501909Z             }
2026-07-26T22:33:03.3501989Z           ]
2026-07-26T22:33:03.3502071Z         }
2026-07-26T22:33:03.3502148Z       }
2026-07-26T22:33:03.3502223Z     },
2026-07-26T22:33:03.3502304Z     {
2026-07-26T22:33:03.3502395Z       "id": "REQ-UPD-9",
2026-07-26T22:33:03.3504899Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-07-26T22:33:03.3505077Z       "requiredStages": [
2026-07-26T22:33:03.3505166Z         "doc",
2026-07-26T22:33:03.3505238Z         "impl",
2026-07-26T22:33:03.3505330Z         "unit"
2026-07-26T22:33:03.3505396Z       ],
2026-07-26T22:33:03.3505491Z       "stages": {
2026-07-26T22:33:03.3505572Z         "doc": {
2026-07-26T22:33:03.3505654Z           "complete": true,
2026-07-26T22:33:03.3505744Z           "evidence": [
2026-07-26T22:33:03.3505829Z             {
2026-07-26T22:33:03.3505916Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.3506011Z               "line": 97
2026-07-26T22:33:03.3506092Z             },
2026-07-26T22:33:03.3506178Z             {
2026-07-26T22:33:03.3506279Z               "path": "docs/MANIFEST.md",
2026-07-26T22:33:03.3506368Z               "line": 472
2026-07-26T22:33:03.3506440Z             }
2026-07-26T22:33:03.3506526Z           ]
2026-07-26T22:33:03.3506608Z         },
2026-07-26T22:33:03.3506692Z         "impl": {
2026-07-26T22:33:03.3506769Z           "complete": true,
2026-07-26T22:33:03.3506866Z           "evidence": [
2026-07-26T22:33:03.3506937Z             {
2026-07-26T22:33:03.3507068Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-07-26T22:33:03.3507158Z               "line": 128
2026-07-26T22:33:03.3507301Z             },
2026-07-26T22:33:03.3507380Z             {
2026-07-26T22:33:03.3507505Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3507596Z               "line": 620
2026-07-26T22:33:03.3507686Z             },
2026-07-26T22:33:03.3507766Z             {
2026-07-26T22:33:03.3507892Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.3507968Z               "line": 533
2026-07-26T22:33:03.3508052Z             },
2026-07-26T22:33:03.3508129Z             {
2026-07-26T22:33:03.3508244Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.3508321Z               "line": 665
2026-07-26T22:33:03.3508400Z             },
2026-07-26T22:33:03.3508478Z             {
2026-07-26T22:33:03.3508601Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.3508691Z               "line": 1114
2026-07-26T22:33:03.3508773Z             },
2026-07-26T22:33:03.3508850Z             {
2026-07-26T22:33:03.3509059Z               "path": "crates/spt-runtime/src/registry.rs",
2026-07-26T22:33:03.3509155Z               "line": 352
2026-07-26T22:33:03.3509326Z             },
2026-07-26T22:33:03.3509408Z             {
2026-07-26T22:33:03.3509513Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3509612Z               "line": 10633
2026-07-26T22:33:03.3509694Z             },
2026-07-26T22:33:03.3509828Z             {
2026-07-26T22:33:03.3509926Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3510021Z               "line": 10813
2026-07-26T22:33:03.3510098Z             },
2026-07-26T22:33:03.3510180Z             {
2026-07-26T22:33:03.3510278Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3510379Z               "line": 11320
2026-07-26T22:33:03.3510461Z             },
2026-07-26T22:33:03.3510542Z             {
2026-07-26T22:33:03.3510641Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3510733Z               "line": 11367
2026-07-26T22:33:03.3510875Z             },
2026-07-26T22:33:03.3510960Z             {
2026-07-26T22:33:03.3511057Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3511151Z               "line": 11390
2026-07-26T22:33:03.3511236Z             },
2026-07-26T22:33:03.3511323Z             {
2026-07-26T22:33:03.3511419Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3511504Z               "line": 11416
2026-07-26T22:33:03.3511590Z             }
2026-07-26T22:33:03.3511725Z           ]
2026-07-26T22:33:03.3511900Z         },
2026-07-26T22:33:03.3512035Z         "int": {
2026-07-26T22:33:03.3512157Z           "complete": false,
2026-07-26T22:33:03.3512290Z           "evidence": []
2026-07-26T22:33:03.3512408Z         },
2026-07-26T22:33:03.3512578Z         "unit": {
2026-07-26T22:33:03.3512679Z           "complete": true,
2026-07-26T22:33:03.3512774Z           "evidence": [
2026-07-26T22:33:03.3512855Z             {
2026-07-26T22:33:03.3512994Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-07-26T22:33:03.3513080Z               "line": 265
2026-07-26T22:33:03.3513160Z             },
2026-07-26T22:33:03.3513236Z             {
2026-07-26T22:33:03.3513356Z               "path": "crates/spt-daemon/src/release.rs",
2026-07-26T22:33:03.3513441Z               "line": 810
2026-07-26T22:33:03.3513527Z             },
2026-07-26T22:33:03.3513605Z             {
2026-07-26T22:33:03.3513714Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-07-26T22:33:03.3513808Z               "line": 1413
2026-07-26T22:33:03.3513890Z             },
2026-07-26T22:33:03.3513976Z             {
2026-07-26T22:33:03.3514080Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3514161Z               "line": 14894
2026-07-26T22:33:03.3514244Z             }
2026-07-26T22:33:03.3514324Z           ]
2026-07-26T22:33:03.3514404Z         }
2026-07-26T22:33:03.3514490Z       }
2026-07-26T22:33:03.3514563Z     },
2026-07-26T22:33:03.3514648Z     {
2026-07-26T22:33:03.3514748Z       "id": "REQ-UPDATE-ADAPTERS-VERB",
2026-07-26T22:33:03.3517362Z       "title": "THE-FORKENING W4 (operator-grilled 2026-07-14): `spt update adapters [<a>[,<b>...]]` = thin ALIAS over the existing `spt adapter update` engine (cli.rs:748 gh_release avenue; the old verb STAYS — published surface) + comma-list accepted on BOTH forms. Semantics: no names -> all gh_release-avenue registrations; names validated FAIL-FAST against the registry BEFORE any update starts (a typo must not leave a half-updated set); per-adapter failure ISOLATION (one failure doesn't stop the rest) with a per-adapter summary line; nonzero exit if any failed; local-path/dev registrations SKIP loud (not error). Gate: unit — name validation, list parsing, isolation + exit-code aggregation, local-path skip; doc — reference regen (drift-gated). Kin REQ-UPDATE-DEFAULT-COMPOSITE (the caller), REQ-ADAPTER-UPDATE-MESSAGE (per-adapter apply notices ride the summary).",
2026-07-26T22:33:03.3517473Z       "requiredStages": [
2026-07-26T22:33:03.3517563Z         "doc",
2026-07-26T22:33:03.3517652Z         "impl",
2026-07-26T22:33:03.3517733Z         "unit"
2026-07-26T22:33:03.3517819Z       ],
2026-07-26T22:33:03.3517950Z       "stages": {
2026-07-26T22:33:03.3518036Z         "doc": {
2026-07-26T22:33:03.3518122Z           "complete": true,
2026-07-26T22:33:03.3518218Z           "evidence": [
2026-07-26T22:33:03.3518298Z             {
2026-07-26T22:33:03.3518428Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.3518518Z               "line": 598
2026-07-26T22:33:03.3518599Z             },
2026-07-26T22:33:03.3518670Z             {
2026-07-26T22:33:03.3518800Z               "path": "docs-site/src/self-update/overview.md",
2026-07-26T22:33:03.3518890Z               "line": 50
2026-07-26T22:33:03.3519057Z             }
2026-07-26T22:33:03.3519133Z           ]
2026-07-26T22:33:03.3519219Z         },
2026-07-26T22:33:03.3519305Z         "impl": {
2026-07-26T22:33:03.3519401Z           "complete": true,
2026-07-26T22:33:03.3519505Z           "evidence": [
2026-07-26T22:33:03.3519634Z             {
2026-07-26T22:33:03.3519739Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3519833Z               "line": 1471
2026-07-26T22:33:03.3519910Z             },
2026-07-26T22:33:03.3519993Z             {
2026-07-26T22:33:03.3520087Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3520172Z               "line": 10971
2026-07-26T22:33:03.3520259Z             },
2026-07-26T22:33:03.3520335Z             {
2026-07-26T22:33:03.3520439Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3520529Z               "line": 10990
2026-07-26T22:33:03.3520610Z             },
2026-07-26T22:33:03.3520697Z             {
2026-07-26T22:33:03.3520796Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3520891Z               "line": 11016
2026-07-26T22:33:03.3520968Z             },
2026-07-26T22:33:03.3521053Z             {
2026-07-26T22:33:03.3521158Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3521288Z               "line": 11034
2026-07-26T22:33:03.3521368Z             },
2026-07-26T22:33:03.3521454Z             {
2026-07-26T22:33:03.3521554Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3521655Z               "line": 11048
2026-07-26T22:33:03.3521730Z             }
2026-07-26T22:33:03.3525491Z           ]
2026-07-26T22:33:03.3525598Z         },
2026-07-26T22:33:03.3525688Z         "int": {
2026-07-26T22:33:03.3525784Z           "complete": false,
2026-07-26T22:33:03.3525873Z           "evidence": []
2026-07-26T22:33:03.3525953Z         },
2026-07-26T22:33:03.3526029Z         "unit": {
2026-07-26T22:33:03.3526130Z           "complete": true,
2026-07-26T22:33:03.3526216Z           "evidence": [
2026-07-26T22:33:03.3526296Z             {
2026-07-26T22:33:03.3526402Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3526492Z               "line": 13479
2026-07-26T22:33:03.3526573Z             },
2026-07-26T22:33:03.3526663Z             {
2026-07-26T22:33:03.3526769Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3526954Z               "line": 13505
2026-07-26T22:33:03.3527031Z             },
2026-07-26T22:33:03.3527112Z             {
2026-07-26T22:33:03.3527212Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3527302Z               "line": 13521
2026-07-26T22:33:03.3527385Z             },
2026-07-26T22:33:03.3527465Z             {
2026-07-26T22:33:03.3527550Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3527637Z               "line": 13566
2026-07-26T22:33:03.3527718Z             }
2026-07-26T22:33:03.3527808Z           ]
2026-07-26T22:33:03.3527885Z         }
2026-07-26T22:33:03.3527966Z       }
2026-07-26T22:33:03.3528052Z     },
2026-07-26T22:33:03.3528141Z     {
2026-07-26T22:33:03.3528260Z       "id": "REQ-UPDATE-APPLY-ALREADY-APPLIED",
2026-07-26T22:33:03.3530694Z       "title": "`spt update apply` classifies an already-staged / already-applied state as a friendly exit-0 no-op instead of dying at the binary-aside rename with 'Access is denied (os error 5)'. ROOT (F-025): a second apply on an already-applied staged version reaches the two-phase binary-aside rename and fails os-error-5, reading as a hard failure when the machine is simply up to date. FIX: apply gains the same pure classifier `fetch` got in v0.18.0 (REQ-UPDATE-FETCH-CURRENT-UX) — already-applied → clear message + exit 0, and the flow MUST short-circuit BEFORE the binary-aside rename in that state; mirror the classifier at ALL apply reject/entry sites the way the fetch fix covered its three. Genuine errors (bad signature, wrong platform, true downgrade, network) still propagate nonzero. (F-025)",
2026-07-26T22:33:03.3530915Z       "requiredStages": [
2026-07-26T22:33:03.3530995Z         "impl",
2026-07-26T22:33:03.3531074Z         "unit"
2026-07-26T22:33:03.3531141Z       ],
2026-07-26T22:33:03.3531242Z       "stages": {
2026-07-26T22:33:03.3531324Z         "doc": {
2026-07-26T22:33:03.3531417Z           "complete": false,
2026-07-26T22:33:03.3531547Z           "evidence": []
2026-07-26T22:33:03.3531628Z         },
2026-07-26T22:33:03.3531718Z         "impl": {
2026-07-26T22:33:03.3531853Z           "complete": true,
2026-07-26T22:33:03.3531982Z           "evidence": [
2026-07-26T22:33:03.3532080Z             {
2026-07-26T22:33:03.3532210Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3532300Z               "line": 61
2026-07-26T22:33:03.3532405Z             },
2026-07-26T22:33:03.3532496Z             {
2026-07-26T22:33:03.3532624Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3532719Z               "line": 157
2026-07-26T22:33:03.3532793Z             },
2026-07-26T22:33:03.3532864Z             {
2026-07-26T22:33:03.3532967Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3533059Z               "line": 411
2026-07-26T22:33:03.3533141Z             },
2026-07-26T22:33:03.3533239Z             {
2026-07-26T22:33:03.3533334Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3533429Z               "line": 5246
2026-07-26T22:33:03.3533510Z             },
2026-07-26T22:33:03.3533594Z             {
2026-07-26T22:33:03.3533698Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3533794Z               "line": 5318
2026-07-26T22:33:03.3533872Z             }
2026-07-26T22:33:03.3533956Z           ]
2026-07-26T22:33:03.3534027Z         },
2026-07-26T22:33:03.3534114Z         "int": {
2026-07-26T22:33:03.3534200Z           "complete": false,
2026-07-26T22:33:03.3534289Z           "evidence": []
2026-07-26T22:33:03.3534371Z         },
2026-07-26T22:33:03.3534458Z         "unit": {
2026-07-26T22:33:03.3534557Z           "complete": true,
2026-07-26T22:33:03.3534647Z           "evidence": [
2026-07-26T22:33:03.3534734Z             {
2026-07-26T22:33:03.3534848Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3534943Z               "line": 523
2026-07-26T22:33:03.3535020Z             },
2026-07-26T22:33:03.3535101Z             {
2026-07-26T22:33:03.3535267Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3535369Z               "line": 18863
2026-07-26T22:33:03.3535444Z             }
2026-07-26T22:33:03.3535525Z           ]
2026-07-26T22:33:03.3535601Z         }
2026-07-26T22:33:03.3535683Z       }
2026-07-26T22:33:03.3535764Z     },
2026-07-26T22:33:03.3535854Z     {
2026-07-26T22:33:03.3535965Z       "id": "REQ-UPDATE-APPLY-RESTART-NOTICE",
2026-07-26T22:33:03.3537926Z       "title": "`spt update apply` prints a LOUD restart-required notice whenever the surviving broker will keep running the pre-apply image (which, until broker-restart choreography exists, is ALWAYS on a successful apply). Public wording, no internal CODE:RESULT markers (composes with REQ-ADAPTER-UPDATE-MESSAGE / the update-apply-confident-message rule) — name the user-visible CONSEQUENCE ('daemon-coordinated features run the previous version until the daemon restarts'), not the broker/brain internals. Composes with REQ-UPDATE-RUNNING-IMAGE-SURFACE (the notice tells the user what the version-surface will then show, and how to clear it). (F-025)",
2026-07-26T22:33:03.3538029Z       "requiredStages": [
2026-07-26T22:33:03.3538158Z         "impl",
2026-07-26T22:33:03.3538245Z         "unit"
2026-07-26T22:33:03.3538316Z       ],
2026-07-26T22:33:03.3538387Z       "stages": {
2026-07-26T22:33:03.3538478Z         "doc": {
2026-07-26T22:33:03.3538608Z           "complete": false,
2026-07-26T22:33:03.3538687Z           "evidence": []
2026-07-26T22:33:03.3538768Z         },
2026-07-26T22:33:03.3538844Z         "impl": {
2026-07-26T22:33:03.3539032Z           "complete": true,
2026-07-26T22:33:03.3539122Z           "evidence": [
2026-07-26T22:33:03.3539194Z             {
2026-07-26T22:33:03.3539310Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3539390Z               "line": 5261
2026-07-26T22:33:03.3539461Z             }
2026-07-26T22:33:03.3539543Z           ]
2026-07-26T22:33:03.3539619Z         },
2026-07-26T22:33:03.3539752Z         "int": {
2026-07-26T22:33:03.3539844Z           "complete": false,
2026-07-26T22:33:03.3539924Z           "evidence": []
2026-07-26T22:33:03.3540010Z         },
2026-07-26T22:33:03.3540100Z         "unit": {
2026-07-26T22:33:03.3540187Z           "complete": true,
2026-07-26T22:33:03.3540267Z           "evidence": [
2026-07-26T22:33:03.3540348Z             {
2026-07-26T22:33:03.3540453Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3540544Z               "line": 18885
2026-07-26T22:33:03.3540625Z             }
2026-07-26T22:33:03.3540706Z           ]
2026-07-26T22:33:03.3540783Z         }
2026-07-26T22:33:03.3540869Z       }
2026-07-26T22:33:03.3540949Z     },
2026-07-26T22:33:03.3541035Z     {
2026-07-26T22:33:03.3541151Z       "id": "REQ-UPDATE-DEFAULT-COMPOSITE",
2026-07-26T22:33:03.3544154Z       "title": "THE-FORKENING W4 (operator-grilled 2026-07-14): plain `spt update` = `update fetch --apply` THEN `update adapters` (core-first doctrine order); when core is already current the core leg no-ops and ONLY adapters update; `--core-only`/`-c` skips the adapters leg. GROUNDING (operator-corrected, code-confirmed): fetch --apply cycles the BRAIN only — broker + PTYs survive (apply_staged applyhost.rs:303; the restart-required text is a NOTICE, cli.rs:4615, not behavior) — so the composite's invoking process survives by construction and NO re-run machinery is needed; on a broker-side release the existing F-025 notice remains the composite's closing output. Gate: unit — composite sequencing incl. already-current -> adapters-only and --core-only skip; int — composite on a staged release applies core then updates a registered adapter in one invocation; doc — reference + self-update docs present plain `spt update` as the primary form. Kin REQ-UPDATE-ADAPTERS-VERB, REQ-UPDATE-RESTART-SAFE-SWAP, REQ-UPDATE-APPLY-RESTART-NOTICE.",
2026-07-26T22:33:03.3544263Z       "requiredStages": [
2026-07-26T22:33:03.3544354Z         "doc",
2026-07-26T22:33:03.3544437Z         "impl",
2026-07-26T22:33:03.3544587Z         "unit",
2026-07-26T22:33:03.3544669Z         "int"
2026-07-26T22:33:03.3544745Z       ],
2026-07-26T22:33:03.3544835Z       "stages": {
2026-07-26T22:33:03.3544921Z         "doc": {
2026-07-26T22:33:03.3545008Z           "complete": true,
2026-07-26T22:33:03.3545103Z           "evidence": [
2026-07-26T22:33:03.3545183Z             {
2026-07-26T22:33:03.3545285Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.3545365Z               "line": 598
2026-07-26T22:33:03.3545460Z             },
2026-07-26T22:33:03.3545541Z             {
2026-07-26T22:33:03.3545676Z               "path": "docs-site/src/self-update/overview.md",
2026-07-26T22:33:03.3545757Z               "line": 32
2026-07-26T22:33:03.3545837Z             }
2026-07-26T22:33:03.3545914Z           ]
2026-07-26T22:33:03.3546000Z         },
2026-07-26T22:33:03.3546075Z         "impl": {
2026-07-26T22:33:03.3546176Z           "complete": true,
2026-07-26T22:33:03.3546258Z           "evidence": [
2026-07-26T22:33:03.3546347Z             {
2026-07-26T22:33:03.3546447Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3546530Z               "line": 1475
2026-07-26T22:33:03.3546676Z             },
2026-07-26T22:33:03.3546756Z             {
2026-07-26T22:33:03.3546857Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3546933Z               "line": 5444
2026-07-26T22:33:03.3547026Z             },
2026-07-26T22:33:03.3547169Z             {
2026-07-26T22:33:03.3547265Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3547346Z               "line": 5478
2026-07-26T22:33:03.3547431Z             },
2026-07-26T22:33:03.3547508Z             {
2026-07-26T22:33:03.3547612Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3547693Z               "line": 5507
2026-07-26T22:33:03.3547779Z             }
2026-07-26T22:33:03.3547861Z           ]
2026-07-26T22:33:03.3547951Z         },
2026-07-26T22:33:03.3548036Z         "int": {
2026-07-26T22:33:03.3548127Z           "complete": true,
2026-07-26T22:33:03.3548260Z           "evidence": [
2026-07-26T22:33:03.3548341Z             {
2026-07-26T22:33:03.3548452Z               "path": "crates/spt/tests/composite_e2e.rs",
2026-07-26T22:33:03.3548547Z               "line": 18
2026-07-26T22:33:03.3548618Z             }
2026-07-26T22:33:03.3548704Z           ]
2026-07-26T22:33:03.3548781Z         },
2026-07-26T22:33:03.3548867Z         "unit": {
2026-07-26T22:33:03.3549048Z           "complete": true,
2026-07-26T22:33:03.3549140Z           "evidence": [
2026-07-26T22:33:03.3549229Z             {
2026-07-26T22:33:03.3549337Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3549418Z               "line": 13586
2026-07-26T22:33:03.3549495Z             },
2026-07-26T22:33:03.3549574Z             {
2026-07-26T22:33:03.3549673Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3549754Z               "line": 13632
2026-07-26T22:33:03.3549841Z             }
2026-07-26T22:33:03.3549921Z           ]
2026-07-26T22:33:03.3550006Z         }
2026-07-26T22:33:03.3550084Z       }
2026-07-26T22:33:03.3550161Z     },
2026-07-26T22:33:03.3550236Z     {
2026-07-26T22:33:03.3550350Z       "id": "REQ-UPDATE-FETCH-APPLY-FLAG",
2026-07-26T22:33:03.3552964Z       "title": "`spt update fetch --apply` is the one-shot get-to-latest: fetch, then INSTALL the staged update REGARDLESS of whether the fetch itself staged anything new — so the brittle `fetch && apply` chain (which broke when fetch no-oped / exited nonzero on an already-staged latest, skipping the chained apply) is unnecessary. Composes with REQ-UPDATE-FETCH-CURRENT-UX: the end state is 'installed latest', reached idempotently from new-staged -> apply / already-staged (applied<candidate) -> STILL apply / already-applied -> noop+exit0 / genuine error (bad signature, no artifact for platform, true downgrade, network) -> do NOT apply, propagate the error + nonzero. Reuses the existing cmd_update_apply core (its own verify + two-phase + auto-rollback own correctness; no duplicated swap/respawn). Additive clap flag (plain doc-comment, no internal codes); reference.md regenerated. (v0.18.0)",
2026-07-26T22:33:03.3553120Z       "requiredStages": [
2026-07-26T22:33:03.3553215Z         "impl",
2026-07-26T22:33:03.3553297Z         "unit"
2026-07-26T22:33:03.3553373Z       ],
2026-07-26T22:33:03.3553454Z       "stages": {
2026-07-26T22:33:03.3553549Z         "doc": {
2026-07-26T22:33:03.3553631Z           "complete": false,
2026-07-26T22:33:03.3553721Z           "evidence": []
2026-07-26T22:33:03.3553802Z         },
2026-07-26T22:33:03.3553888Z         "impl": {
2026-07-26T22:33:03.3553974Z           "complete": true,
2026-07-26T22:33:03.3554059Z           "evidence": [
2026-07-26T22:33:03.3554136Z             {
2026-07-26T22:33:03.3554285Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3554421Z               "line": 6562
2026-07-26T22:33:03.3554511Z             }
2026-07-26T22:33:03.3554587Z           ]
2026-07-26T22:33:03.3554668Z         },
2026-07-26T22:33:03.3554747Z         "int": {
2026-07-26T22:33:03.3554842Z           "complete": false,
2026-07-26T22:33:03.3554924Z           "evidence": []
2026-07-26T22:33:03.3555071Z         },
2026-07-26T22:33:03.3555157Z         "unit": {
2026-07-26T22:33:03.3555249Z           "complete": true,
2026-07-26T22:33:03.3555330Z           "evidence": [
2026-07-26T22:33:03.3555405Z             {
2026-07-26T22:33:03.3555506Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3555634Z               "line": 13444
2026-07-26T22:33:03.3555724Z             },
2026-07-26T22:33:03.3555806Z             {
2026-07-26T22:33:03.3555907Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3555983Z               "line": 13461
2026-07-26T22:33:03.3556063Z             }
2026-07-26T22:33:03.3556145Z           ]
2026-07-26T22:33:03.3556226Z         }
2026-07-26T22:33:03.3556302Z       }
2026-07-26T22:33:03.3556387Z     },
2026-07-26T22:33:03.3556460Z     {
2026-07-26T22:33:03.3556565Z       "id": "REQ-UPDATE-FETCH-CURRENT-UX",
2026-07-26T22:33:03.3559536Z       "title": "`spt update fetch` reports an already-staged / already-applied latest as an ACTIONABLE human outcome (exit 0), not a Debug-formatted error. ROOT: cmd_update_fetch (cli.rs) sets the rollback floor = staged_version, so when the published candidate == the already-staged version, verify_update_set_metadata returns Err(RejectReason::Rollback{current,candidate}) — printed as {reason:?} (Debug) at exit 1, reading as a FAILURE when the update is merely already downloaded and just needs `spt update apply` (this bit the operator: fetch kept 'failing', apply was the missing step). FIX: a PURE classifier (reason, applied, staged) -> {AlreadyStaged (latest downloaded, not yet installed) / AlreadyApplied (up to date) / GenuineError}; already-staged + already-applied print a friendly message and exit 0; genuine rejects use RejectReason's Display (release.rs, not Debug) + exit 1 — applied at ALL THREE fetch reject sites (metadata + artifact-verify + plan-verify). (v0.18.0)",
2026-07-26T22:33:03.3559637Z       "requiredStages": [
2026-07-26T22:33:03.3559728Z         "impl",
2026-07-26T22:33:03.3559807Z         "unit"
2026-07-26T22:33:03.3559898Z       ],
2026-07-26T22:33:03.3559988Z       "stages": {
2026-07-26T22:33:03.3560069Z         "doc": {
2026-07-26T22:33:03.3560157Z           "complete": false,
2026-07-26T22:33:03.3560247Z           "evidence": []
2026-07-26T22:33:03.3560324Z         },
2026-07-26T22:33:03.3560416Z         "impl": {
2026-07-26T22:33:03.3560491Z           "complete": true,
2026-07-26T22:33:03.3560586Z           "evidence": [
2026-07-26T22:33:03.3560669Z             {
2026-07-26T22:33:03.3560768Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3560853Z               "line": 6528
2026-07-26T22:33:03.3560935Z             }
2026-07-26T22:33:03.3561016Z           ]
2026-07-26T22:33:03.3561097Z         },
2026-07-26T22:33:03.3561177Z         "int": {
2026-07-26T22:33:03.3561274Z           "complete": false,
2026-07-26T22:33:03.3561350Z           "evidence": []
2026-07-26T22:33:03.3561502Z         },
2026-07-26T22:33:03.3561584Z         "unit": {
2026-07-26T22:33:03.3561674Z           "complete": true,
2026-07-26T22:33:03.3561760Z           "evidence": [
2026-07-26T22:33:03.3561841Z             {
2026-07-26T22:33:03.3561942Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3562026Z               "line": 13400
2026-07-26T22:33:03.3562108Z             }
2026-07-26T22:33:03.3562189Z           ]
2026-07-26T22:33:03.3562271Z         }
2026-07-26T22:33:03.3562350Z       }
2026-07-26T22:33:03.3562427Z     },
2026-07-26T22:33:03.3562514Z     {
2026-07-26T22:33:03.3562633Z       "id": "REQ-UPDATE-FINISH-COMMUNE-FLUSH",
2026-07-26T22:33:03.3567867Z       "title": "DEFERRED (post-LIFECYCLE-TRUTH, operator-ruled 2026-07-07 — mint now, impl a FUTURE milestone): make the update swap LOSSLESS for live hosted endpoints by flushing a final echo-commune per endpoint BEFORE the brain-subtree reap. ROOT (operator-surfaced probing --finish): `update apply --finish` = daemonless swap -> daemon RESTART; the graceful `daemon stop` path (daemon.rs:316-325) raises brain_stop then reaper.reap() KILLS the brain subtree (brain + shellwake watchers + detached Psyches) as one unit — there is NO per-endpoint final commune before the kill. ENDPOINT-SURVIVAL (REQ-UPDATE-FINISH-ENDPOINT-SURVIVAL) then RESPAWNS each orphaned online spt-hosted endpoint, but from its LAST commune (whatever the ongoing per-event echo-commune cadence last saved), NOT an as-of-swap checkpoint — so mid-turn / uncommuned work is lost across the bounce. Today's mitigation is operator discipline: commune-before-swap. FIX (future): the stop/finish path, before reap, drives each LIVE hosted endpoint's final echo-commune (fire_echo final context save) so the respawn resumes from a swap-fresh checkpoint. Composes with ENDPOINT-SURVIVAL (commune -> reap -> respawn) and the W1 echo pipeline (REQ-ECHO-DROP-DIR-RESOLVE / REQ-PSYCHE-STAMP-CLEAR-ANY-SUCCESS). Bounded + loud per endpoint (a commune that hangs must not wedge the stop — timeout then reap anyway, never block the swap). Int: a live hosted endpoint with uncommuned state -> --finish -> respawned endpoint's digest/psyche reflects the pre-swap state (RED-first: without the flush the respawn shows only the last-cadence commune).",
2026-07-26T22:33:03.3568351Z       "requiredStages": [],
2026-07-26T22:33:03.3568447Z       "stages": {
2026-07-26T22:33:03.3568527Z         "doc": {
2026-07-26T22:33:03.3568618Z           "complete": false,
2026-07-26T22:33:03.3568695Z           "evidence": []
2026-07-26T22:33:03.3568776Z         },
2026-07-26T22:33:03.3568851Z         "impl": {
2026-07-26T22:33:03.3569034Z           "complete": false,
2026-07-26T22:33:03.3569119Z           "evidence": []
2026-07-26T22:33:03.3569199Z         },
2026-07-26T22:33:03.3569282Z         "int": {
2026-07-26T22:33:03.3569372Z           "complete": false,
2026-07-26T22:33:03.3569453Z           "evidence": []
2026-07-26T22:33:03.3569539Z         },
2026-07-26T22:33:03.3569611Z         "unit": {
2026-07-26T22:33:03.3569701Z           "complete": false,
2026-07-26T22:33:03.3569791Z           "evidence": []
2026-07-26T22:33:03.3569877Z         }
2026-07-26T22:33:03.3569954Z       }
2026-07-26T22:33:03.3570030Z     },
2026-07-26T22:33:03.3570111Z     {
2026-07-26T22:33:03.3570236Z       "id": "REQ-UPDATE-FINISH-ENDPOINT-SURVIVAL",
2026-07-26T22:33:03.3571919Z       "title": "W3 (LIFECYCLE-TRUTH): daemon restart no longer massacres hosted endpoints — daemon start RE-RUNS previously-online spt-hosted endpoints. ROOT rig-proven: daemon stop+start (the apply notice's OWN instruction) kills every hosted endpoint; they stay OFFLINE after start (no resurrection) though records exist (info.json status + adapter + cwd). SCOPE RULING (doyle): re-run-on-start, marked start-reason=daemon-restart; agents' minds ride psyche re-host as today. Int: endpoint online -> daemon stop -> start -> endpoint back ONLINE, same id, harness respawned.",
2026-07-26T22:33:03.3572019Z       "requiredStages": [
2026-07-26T22:33:03.3572095Z         "impl",
2026-07-26T22:33:03.3572239Z         "unit",
2026-07-26T22:33:03.3572329Z         "int"
2026-07-26T22:33:03.3572396Z       ],
2026-07-26T22:33:03.3572483Z       "stages": {
2026-07-26T22:33:03.3572563Z         "doc": {
2026-07-26T22:33:03.3572658Z           "complete": false,
2026-07-26T22:33:03.3572739Z           "evidence": []
2026-07-26T22:33:03.3572822Z         },
2026-07-26T22:33:03.3572897Z         "impl": {
2026-07-26T22:33:03.3572987Z           "complete": true,
2026-07-26T22:33:03.3573074Z           "evidence": [
2026-07-26T22:33:03.3573146Z             {
2026-07-26T22:33:03.3573272Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.3573353Z               "line": 428
2026-07-26T22:33:03.3573439Z             },
2026-07-26T22:33:03.3573516Z             {
2026-07-26T22:33:03.3573634Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.3573730Z               "line": 520
2026-07-26T22:33:03.3573797Z             },
2026-07-26T22:33:03.3573883Z             {
2026-07-26T22:33:03.3574001Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.3574079Z               "line": 528
2026-07-26T22:33:03.3574231Z             },
2026-07-26T22:33:03.3574316Z             {
2026-07-26T22:33:03.3574460Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.3574583Z               "line": 566
2026-07-26T22:33:03.3574789Z             },
2026-07-26T22:33:03.3574903Z             {
2026-07-26T22:33:03.3575179Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.3575308Z               "line": 1164
2026-07-26T22:33:03.3575419Z             }
2026-07-26T22:33:03.3575527Z           ]
2026-07-26T22:33:03.3575608Z         },
2026-07-26T22:33:03.3575679Z         "int": {
2026-07-26T22:33:03.3575769Z           "complete": true,
2026-07-26T22:33:03.3575849Z           "evidence": [
2026-07-26T22:33:03.3575943Z             {
2026-07-26T22:33:03.3576178Z               "path": "crates/spt-daemon/tests/endpoint_survival.rs",
2026-07-26T22:33:03.3576607Z               "line": 113
2026-07-26T22:33:03.3576688Z             }
2026-07-26T22:33:03.3576769Z           ]
2026-07-26T22:33:03.3576859Z         },
2026-07-26T22:33:03.3576956Z         "unit": {
2026-07-26T22:33:03.3577060Z           "complete": true,
2026-07-26T22:33:03.3577146Z           "evidence": [
2026-07-26T22:33:03.3577222Z             {
2026-07-26T22:33:03.3577356Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.3577446Z               "line": 2458
2026-07-26T22:33:03.3577536Z             }
2026-07-26T22:33:03.3577614Z           ]
2026-07-26T22:33:03.3577703Z         }
2026-07-26T22:33:03.3577775Z       }
2026-07-26T22:33:03.3577861Z     },
2026-07-26T22:33:03.3577938Z     {
2026-07-26T22:33:03.3578037Z       "id": "REQ-UPDATE-GH-TRANSPORT",
2026-07-26T22:33:03.3582070Z       "title": "THE-FORKENING W1 (ADR-0036, operator-ruled 2026-07-14): the release channel is PRIVATE (`BigscreenVR/spt-bs-releases`) and the gh CLI is the mandated carrier — release discovery (`releases/latest`, cli.rs:9717) and asset download (cli.rs:4861 public browser URLs) move to deadline-wrapped `gh` subprocess calls (`gh api`, `gh release download`; run_git pattern). WHY gh not token+HTTP: private-repo `browser_download_url` 404s even with a valid token — the API asset-id dance is gh's job. Default repo flips via the existing SPT_INSTALL_REPO seam (cli.rs:5363) + xtask REPO const (main.rs:729) + notif.rs consent-changelog URL rider. Loud failure classes: gh missing -> UPDATE_FETCH_REJECTED:GhCliRequired with OS-SPECIFIC install hints (winget/apt/brew); gh unauthed -> distinct GhAuthRequired pointing at `gh auth login`. Signature verification unchanged — bytes verified after download, carrier-independent (update-set/counter/anchor continuity per ADR-0036 §2). release_verify_e2e reworked to the gh carrier. Gate: unit — url/invocation construction + both failure classes render OS-correct hints; int — fetch against a real gh-authed channel resolves latest + downloads and verifies an asset; doc — self-update docs name the gh prerequisite. Kin REQ-INSTALL-BOOTSTRAP-VERB (same carrier at first install), ADR-0036.",
2026-07-26T22:33:03.3582288Z       "requiredStages": [
2026-07-26T22:33:03.3582423Z         "doc",
2026-07-26T22:33:03.3582507Z         "impl",
2026-07-26T22:33:03.3582589Z         "unit",
2026-07-26T22:33:03.3582670Z         "int"
2026-07-26T22:33:03.3582795Z       ],
2026-07-26T22:33:03.3582903Z       "stages": {
2026-07-26T22:33:03.3583019Z         "doc": {
2026-07-26T22:33:03.3583128Z           "complete": true,
2026-07-26T22:33:03.3583209Z           "evidence": [
2026-07-26T22:33:03.3583295Z             {
2026-07-26T22:33:03.3583391Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.3583480Z               "line": 591
2026-07-26T22:33:03.3583557Z             },
2026-07-26T22:33:03.3583639Z             {
2026-07-26T22:33:03.3583767Z               "path": "docs-site/src/self-update/overview.md",
2026-07-26T22:33:03.3583861Z               "line": 74
2026-07-26T22:33:03.3583941Z             }
2026-07-26T22:33:03.3584019Z           ]
2026-07-26T22:33:03.3584101Z         },
2026-07-26T22:33:03.3584266Z         "impl": {
2026-07-26T22:33:03.3584348Z           "complete": true,
2026-07-26T22:33:03.3584444Z           "evidence": [
2026-07-26T22:33:03.3584519Z             {
2026-07-26T22:33:03.3584644Z               "path": "crates/spt-daemon/src/notif.rs",
2026-07-26T22:33:03.3584772Z               "line": 484
2026-07-26T22:33:03.3584852Z             },
2026-07-26T22:33:03.3584934Z             {
2026-07-26T22:33:03.3585034Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3585111Z               "line": 5219
2026-07-26T22:33:03.3585196Z             },
2026-07-26T22:33:03.3585268Z             {
2026-07-26T22:33:03.3585368Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3585458Z               "line": 5789
2026-07-26T22:33:03.3585539Z             },
2026-07-26T22:33:03.3585612Z             {
2026-07-26T22:33:03.3585768Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3585854Z               "line": 5794
2026-07-26T22:33:03.3585942Z             },
2026-07-26T22:33:03.3586021Z             {
2026-07-26T22:33:03.3586125Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3586201Z               "line": 5814
2026-07-26T22:33:03.3586287Z             },
2026-07-26T22:33:03.3586362Z             {
2026-07-26T22:33:03.3586465Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3586547Z               "line": 5834
2026-07-26T22:33:03.3586634Z             },
2026-07-26T22:33:03.3586714Z             {
2026-07-26T22:33:03.3586813Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3586900Z               "line": 5845
2026-07-26T22:33:03.3586972Z             },
2026-07-26T22:33:03.3587048Z             {
2026-07-26T22:33:03.3587133Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3587230Z               "line": 5857
2026-07-26T22:33:03.3587310Z             },
2026-07-26T22:33:03.3587395Z             {
2026-07-26T22:33:03.3587491Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3587587Z               "line": 6580
2026-07-26T22:33:03.3587663Z             },
2026-07-26T22:33:03.3587744Z             {
2026-07-26T22:33:03.3587840Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3587934Z               "line": 6617
2026-07-26T22:33:03.3588015Z             },
2026-07-26T22:33:03.3588096Z             {
2026-07-26T22:33:03.3588202Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3588292Z               "line": 6700
2026-07-26T22:33:03.3588378Z             },
2026-07-26T22:33:03.3588460Z             {
2026-07-26T22:33:03.3588569Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.3588664Z               "line": 935
2026-07-26T22:33:03.3588746Z             }
2026-07-26T22:33:03.3588832Z           ]
2026-07-26T22:33:03.3588912Z         },
2026-07-26T22:33:03.3589092Z         "int": {
2026-07-26T22:33:03.3589243Z           "complete": true,
2026-07-26T22:33:03.3589337Z           "evidence": [
2026-07-26T22:33:03.3589414Z             {
2026-07-26T22:33:03.3589558Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-07-26T22:33:03.3589638Z               "line": 21
2026-07-26T22:33:03.3589724Z             }
2026-07-26T22:33:03.3589801Z           ]
2026-07-26T22:33:03.3589882Z         },
2026-07-26T22:33:03.3589962Z         "unit": {
2026-07-26T22:33:03.3590048Z           "complete": true,
2026-07-26T22:33:03.3590135Z           "evidence": [
2026-07-26T22:33:03.3590221Z             {
2026-07-26T22:33:03.3590324Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3590416Z               "line": 18766
2026-07-26T22:33:03.3590497Z             }
2026-07-26T22:33:03.3590578Z           ]
2026-07-26T22:33:03.3590663Z         }
2026-07-26T22:33:03.3590755Z       }
2026-07-26T22:33:03.3590830Z     },
2026-07-26T22:33:03.3590911Z     {
2026-07-26T22:33:03.3591007Z       "id": "REQ-UPDATE-ONE-SHOT-FINISH",
2026-07-26T22:33:03.3592615Z       "title": "W3 (LIFECYCLE-TRUTH): update apply works daemonless and one command finishes the cycle. ROOT (operator wart): update fetch/apply run ensure_daemon_announced (cli.rs:4386) -> on a stopped box they BOOT THE OLD broker pre-swap, guaranteeing the mixed old-broker/new-brain pair + a manual bounce. FIX: apply works daemonless (swap + record, next start runs new bytes); `update apply --finish` (name subject to docs-token gate) completes the cycle: swap -> brain cycle -> broker restart onto new bytes (rides REQ-UPDATE-FINISH-ENDPOINT-SURVIVAL so the restart is not a massacre). CLI change -> xtask docs gen, no internal codes in clap ///.",
2026-07-26T22:33:03.3592834Z       "requiredStages": [
2026-07-26T22:33:03.3592915Z         "impl",
2026-07-26T22:33:03.3592997Z         "unit"
2026-07-26T22:33:03.3593077Z       ],
2026-07-26T22:33:03.3593163Z       "stages": {
2026-07-26T22:33:03.3593244Z         "doc": {
2026-07-26T22:33:03.3593345Z           "complete": false,
2026-07-26T22:33:03.3593478Z           "evidence": []
2026-07-26T22:33:03.3593564Z         },
2026-07-26T22:33:03.3593651Z         "impl": {
2026-07-26T22:33:03.3593744Z           "complete": true,
2026-07-26T22:33:03.3593821Z           "evidence": [
2026-07-26T22:33:03.3593904Z             {
2026-07-26T22:33:03.3594027Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3594108Z               "line": 97
2026-07-26T22:33:03.3594184Z             },
2026-07-26T22:33:03.3594271Z             {
2026-07-26T22:33:03.3594393Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3594478Z               "line": 382
2026-07-26T22:33:03.3594555Z             },
2026-07-26T22:33:03.3594631Z             {
2026-07-26T22:33:03.3594736Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3594826Z               "line": 5273
2026-07-26T22:33:03.3594903Z             },
2026-07-26T22:33:03.3594979Z             {
2026-07-26T22:33:03.3595083Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3595180Z               "line": 5292
2026-07-26T22:33:03.3595256Z             },
2026-07-26T22:33:03.3595342Z             {
2026-07-26T22:33:03.3595441Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3595523Z               "line": 5310
2026-07-26T22:33:03.3595613Z             },
2026-07-26T22:33:03.3595694Z             {
2026-07-26T22:33:03.3595799Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3595886Z               "line": 5374
2026-07-26T22:33:03.3595971Z             },
2026-07-26T22:33:03.3596042Z             {
2026-07-26T22:33:03.3596148Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3596234Z               "line": 5608
2026-07-26T22:33:03.3596309Z             }
2026-07-26T22:33:03.3596381Z           ]
2026-07-26T22:33:03.3596468Z         },
2026-07-26T22:33:03.3596553Z         "int": {
2026-07-26T22:33:03.3596643Z           "complete": false,
2026-07-26T22:33:03.3596728Z           "evidence": []
2026-07-26T22:33:03.3596852Z         },
2026-07-26T22:33:03.3596931Z         "unit": {
2026-07-26T22:33:03.3597026Z           "complete": true,
2026-07-26T22:33:03.3597107Z           "evidence": [
2026-07-26T22:33:03.3597189Z             {
2026-07-26T22:33:03.3597307Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3597398Z               "line": 917
2026-07-26T22:33:03.3597480Z             },
2026-07-26T22:33:03.3597565Z             {
2026-07-26T22:33:03.3597679Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3597771Z               "line": 958
2026-07-26T22:33:03.3597851Z             },
2026-07-26T22:33:03.3597946Z             {
2026-07-26T22:33:03.3598032Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3598128Z               "line": 15802
2026-07-26T22:33:03.3598209Z             },
2026-07-26T22:33:03.3598289Z             {
2026-07-26T22:33:03.3598385Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3598476Z               "line": 18920
2026-07-26T22:33:03.3598566Z             },
2026-07-26T22:33:03.3598656Z             {
2026-07-26T22:33:03.3598800Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3598890Z               "line": 18953
2026-07-26T22:33:03.3599049Z             }
2026-07-26T22:33:03.3599138Z           ]
2026-07-26T22:33:03.3599219Z         }
2026-07-26T22:33:03.3599406Z       }
2026-07-26T22:33:03.3599491Z     },
2026-07-26T22:33:03.3599576Z     {
2026-07-26T22:33:03.3599686Z       "id": "REQ-UPDATE-PROMOTE-DRAINED",
2026-07-26T22:33:03.3603304Z       "title": "W3 (LIFECYCLE-TRUTH, mechanic-d MOVED FROM W2 per doyle gate verdict @e5ae7a9 — binding): the update-apply brain-generation promotion completes only when the OLD generation's broker subscriber connection is CLOSED or stall-EVICTED — never while blocked writes still pend on it. ROOT: `brain.ready` != subscribers drained; W2's stall-evict (REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE) only BOUNDS the false-promote window to BRAIN_WRITE_DEADLINE (15s), it does NOT close it — a new brain can signal ready inside that window while the old gen's conn is still wedged, so the apply 'promotes' onto a still-frozen control plane (the 22:47 incident-night false-promote). FIX: the promotion gate (ADR-0018 brain-trial, brainproc.rs) adds an explicit DRAINED precondition — promote only on ready AND old-gen-subscriber-drained (conn closed OR stall-evicted); the drained signal reads broker truth (the W2 stall-evict tally / the old conn's liveness), no brain round-trip. The residual W2 left open, now closed. Int = a FALSE-PROMOTE rig that exercises the promotion path itself: an old-gen subscriber conn held wedged past ready must NOT promote until it drains (RED-first: ready-alone promotes).",
2026-07-26T22:33:03.3603495Z       "requiredStages": [
2026-07-26T22:33:03.3603581Z         "impl",
2026-07-26T22:33:03.3603661Z         "unit",
2026-07-26T22:33:03.3603756Z         "int"
2026-07-26T22:33:03.3603839Z       ],
2026-07-26T22:33:03.3603919Z       "stages": {
2026-07-26T22:33:03.3604000Z         "doc": {
2026-07-26T22:33:03.3604100Z           "complete": false,
2026-07-26T22:33:03.3604182Z           "evidence": []
2026-07-26T22:33:03.3604272Z         },
2026-07-26T22:33:03.3604349Z         "impl": {
2026-07-26T22:33:03.3604434Z           "complete": true,
2026-07-26T22:33:03.3604521Z           "evidence": [
2026-07-26T22:33:03.3604601Z             {
2026-07-26T22:33:03.3604720Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:03.3604816Z               "line": 609
2026-07-26T22:33:03.3604925Z             },
2026-07-26T22:33:03.3605048Z             {
2026-07-26T22:33:03.3605178Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3605268Z               "line": 1597
2026-07-26T22:33:03.3605353Z             },
2026-07-26T22:33:03.3605449Z             {
2026-07-26T22:33:03.3605559Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3605648Z               "line": 3905
2026-07-26T22:33:03.3605798Z             },
2026-07-26T22:33:03.3605873Z             {
2026-07-26T22:33:03.3605977Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3606069Z               "line": 4043
2026-07-26T22:33:03.3606150Z             }
2026-07-26T22:33:03.3606231Z           ]
2026-07-26T22:33:03.3606306Z         },
2026-07-26T22:33:03.3606389Z         "int": {
2026-07-26T22:33:03.3606479Z           "complete": true,
2026-07-26T22:33:03.3606569Z           "evidence": [
2026-07-26T22:33:03.3606640Z             {
2026-07-26T22:33:03.3606780Z               "path": "crates/spt-daemon/tests/false_promote.rs",
2026-07-26T22:33:03.3606859Z               "line": 236
2026-07-26T22:33:03.3606945Z             }
2026-07-26T22:33:03.3607028Z           ]
2026-07-26T22:33:03.3607118Z         },
2026-07-26T22:33:03.3607188Z         "unit": {
2026-07-26T22:33:03.3607278Z           "complete": true,
2026-07-26T22:33:03.3607359Z           "evidence": [
2026-07-26T22:33:03.3607445Z             {
2026-07-26T22:33:03.3607567Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:03.3607663Z               "line": 1692
2026-07-26T22:33:03.3607801Z             },
2026-07-26T22:33:03.3607886Z             {
2026-07-26T22:33:03.3608001Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:03.3608097Z               "line": 1740
2026-07-26T22:33:03.3608186Z             },
2026-07-26T22:33:03.3608311Z             {
2026-07-26T22:33:03.3608416Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3608496Z               "line": 8765
2026-07-26T22:33:03.3608577Z             }
2026-07-26T22:33:03.3608650Z           ]
2026-07-26T22:33:03.3608726Z         }
2026-07-26T22:33:03.3608807Z       }
2026-07-26T22:33:03.3608888Z     },
2026-07-26T22:33:03.3609050Z     {
2026-07-26T22:33:03.3609164Z       "id": "REQ-UPDATE-RESTART-SAFE-SWAP",
2026-07-26T22:33:03.3612486Z       "title": "THE-FORKENING W4 (operator-grilled 2026-07-14; RETIRES findings-backlog seed #12 REQ-UPDATE-ONE-STEP-SAFE-SWAP): `spt update --restart` = the one-step ergonomic path to the SAFE full-cycle swap — fetch -> `update adapters` -> `apply --finish` LAST (lethal-leg-last, ruled: apply --finish restarts the whole daemon incl. broker/PTYs, so it must be the final act — everything completes from ANY invoking context including an spt-hosted session whose PTY dies at that step; accepted cost: a finish FAILURE leaves updated adapters on old-activated core briefly — loud + operator-attended by nature of the flag). Composes with `-c/--core-only` (skip adapters leg). The 0.28.0 wedge lesson closes: the ergonomic one-step no longer picks the riskier path by default for operators who want the full cycle. Gate: unit — flag sequencing incl. lethal-leg-last ordering + -c compose; doc — self-update docs present --restart as the full-cycle form and name the finish-restart consequence. Kin REQ-UPDATE-DEFAULT-COMPOSITE, REQ-UPDATE-FINISH-COMMUNE-FLUSH (deferred commune-flush rides the same finish path when built), seed #12 (retired by this).",
2026-07-26T22:33:03.3612669Z       "requiredStages": [
2026-07-26T22:33:03.3612750Z         "doc",
2026-07-26T22:33:03.3612845Z         "impl",
2026-07-26T22:33:03.3612925Z         "unit"
2026-07-26T22:33:03.3613010Z       ],
2026-07-26T22:33:03.3613101Z       "stages": {
2026-07-26T22:33:03.3613183Z         "doc": {
2026-07-26T22:33:03.3613278Z           "complete": true,
2026-07-26T22:33:03.3613367Z           "evidence": [
2026-07-26T22:33:03.3613445Z             {
2026-07-26T22:33:03.3613540Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.3613630Z               "line": 598
2026-07-26T22:33:03.3613711Z             },
2026-07-26T22:33:03.3613793Z             {
2026-07-26T22:33:03.3613917Z               "path": "docs-site/src/self-update/overview.md",
2026-07-26T22:33:03.3614006Z               "line": 41
2026-07-26T22:33:03.3614089Z             }
2026-07-26T22:33:03.3614170Z           ]
2026-07-26T22:33:03.3614251Z         },
2026-07-26T22:33:03.3614336Z         "impl": {
2026-07-26T22:33:03.3614499Z           "complete": true,
2026-07-26T22:33:03.3614594Z           "evidence": [
2026-07-26T22:33:03.3614670Z             {
2026-07-26T22:33:03.3614780Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3614856Z               "line": 1476
2026-07-26T22:33:03.3614937Z             },
2026-07-26T22:33:03.3615014Z             {
2026-07-26T22:33:03.3615119Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3615198Z               "line": 5445
2026-07-26T22:33:03.3615280Z             },
2026-07-26T22:33:03.3615358Z             {
2026-07-26T22:33:03.3615452Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3615537Z               "line": 5479
2026-07-26T22:33:03.3615617Z             }
2026-07-26T22:33:03.3615694Z           ]
2026-07-26T22:33:03.3615771Z         },
2026-07-26T22:33:03.3615842Z         "int": {
2026-07-26T22:33:03.3615942Z           "complete": false,
2026-07-26T22:33:03.3616023Z           "evidence": []
2026-07-26T22:33:03.3616114Z         },
2026-07-26T22:33:03.3616194Z         "unit": {
2026-07-26T22:33:03.3616285Z           "complete": true,
2026-07-26T22:33:03.3616433Z           "evidence": [
2026-07-26T22:33:03.3616518Z             {
2026-07-26T22:33:03.3616614Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3616696Z               "line": 13651
2026-07-26T22:33:03.3616810Z             }
2026-07-26T22:33:03.3616939Z           ]
2026-07-26T22:33:03.3617030Z         }
2026-07-26T22:33:03.3617110Z       }
2026-07-26T22:33:03.3617186Z     },
2026-07-26T22:33:03.3617269Z     {
2026-07-26T22:33:03.3617382Z       "id": "REQ-UPDATE-RUNNING-IMAGE-SURFACE",
2026-07-26T22:33:03.3620649Z       "title": "`spt` surfaces the RUNNING broker image version beside the on-disk version so an updated-looking node reveals broker-side dormancy. ROOT (F-025): `spt update apply` restarts the BRAIN only (ADR-0018 D3-3) — the BROKER process survives and keeps running its pre-apply compiled image, so every broker-side surface of a freshly-applied release (the F015B live-apply matcher, dispatch inject legs, etc.) is silently dormant until a full daemon bounce, with nothing in the CLI revealing the split. FIX: the running broker SELF-REPORTS its compiled image version over IPC (a new request KIND answered by the live broker process from its own compiled build constant) — HARD CONSTRAINT: the version comes FROM the running broker process, NEVER inferred from disk bytes, install manifest, or file timestamps, since the disk is exactly the half that is already ahead; a version-surface command (`spt version` and/or `spt daemon status`) prints the running-broker version beside the on-disk/product version and flags a mismatch. Keeps read-side truth independent of write-side claims (the field lesson from F015B). (F-025)",
2026-07-26T22:33:03.3620820Z       "requiredStages": [
2026-07-26T22:33:03.3620900Z         "impl",
2026-07-26T22:33:03.3620980Z         "unit",
2026-07-26T22:33:03.3621065Z         "int"
2026-07-26T22:33:03.3621147Z       ],
2026-07-26T22:33:03.3621238Z       "stages": {
2026-07-26T22:33:03.3621318Z         "doc": {
2026-07-26T22:33:03.3621443Z           "complete": false,
2026-07-26T22:33:03.3621576Z           "evidence": []
2026-07-26T22:33:03.3621694Z         },
2026-07-26T22:33:03.3621806Z         "impl": {
2026-07-26T22:33:03.3621929Z           "complete": true,
2026-07-26T22:33:03.3622048Z           "evidence": [
2026-07-26T22:33:03.3622172Z             {
2026-07-26T22:33:03.3622291Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.3622382Z               "line": 1297
2026-07-26T22:33:03.3622473Z             },
2026-07-26T22:33:03.3622601Z             {
2026-07-26T22:33:03.3622722Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3622821Z               "line": 4193
2026-07-26T22:33:03.3622896Z             },
2026-07-26T22:33:03.3622983Z             {
2026-07-26T22:33:03.3623093Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3623182Z               "line": 5327
2026-07-26T22:33:03.3623339Z             },
2026-07-26T22:33:03.3623425Z             {
2026-07-26T22:33:03.3623523Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3623613Z               "line": 4577
2026-07-26T22:33:03.3623690Z             },
2026-07-26T22:33:03.3623776Z             {
2026-07-26T22:33:03.3623876Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3623971Z               "line": 4752
2026-07-26T22:33:03.3624048Z             },
2026-07-26T22:33:03.3624129Z             {
2026-07-26T22:33:03.3624223Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3628229Z               "line": 4870
2026-07-26T22:33:03.3628327Z             }
2026-07-26T22:33:03.3628404Z           ]
2026-07-26T22:33:03.3628485Z         },
2026-07-26T22:33:03.3628565Z         "int": {
2026-07-26T22:33:03.3628663Z           "complete": true,
2026-07-26T22:33:03.3628753Z           "evidence": [
2026-07-26T22:33:03.3628835Z             {
2026-07-26T22:33:03.3629068Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-07-26T22:33:03.3629165Z               "line": 566
2026-07-26T22:33:03.3629364Z             }
2026-07-26T22:33:03.3629446Z           ]
2026-07-26T22:33:03.3629522Z         },
2026-07-26T22:33:03.3629612Z         "unit": {
2026-07-26T22:33:03.3629703Z           "complete": true,
2026-07-26T22:33:03.3629794Z           "evidence": [
2026-07-26T22:33:03.3629923Z             {
2026-07-26T22:33:03.3630036Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3630123Z               "line": 18987
2026-07-26T22:33:03.3630213Z             }
2026-07-26T22:33:03.3630294Z           ]
2026-07-26T22:33:03.3630371Z         }
2026-07-26T22:33:03.3630453Z       }
2026-07-26T22:33:03.3630537Z     },
2026-07-26T22:33:03.3630618Z     {
2026-07-26T22:33:03.3630734Z       "id": "REQ-UPDATE-TRIAL-DRAIN-DRIVE",
2026-07-26T22:33:03.3641680Z       "title": "UPDATE-WEDGE (counter-54, doyle-ruled 2026-07-09 — regression of the v0.29.0 seamless brain-swap): a brain generation DRIVES the broker's controller-liveness reap (a KIND_SESSIONS poll) each heartbeat throughout its boot/trial loop, so a hard-KILLED prior generation's black-holed LOCAL controller conn (by:None) is stall-evicted within the trial window and can never permanently strand the promotion DRAINED gate. ROOT (2026-07-09 field freeze, `spt update fetch --apply` v0.30.0->v0.30.2 froze all 7 live PTYs ~30s then rolled back): the promote gate (run_trial, brainproc.rs:657-661) needs BOTH `ready_generation==gen` AND `old_gen_drained()`; `old_gen_drained()` = `!any_local_controller_wedged()` (brainproc.rs:534) is a PURE READ of `write_blocked_since` (broker.rs:2703) — it never DRIVES the evict. The evict (`stall_evict_controller`, broker.rs:1039, same 15s `brain_write_deadline` the wedge-read uses) only runs via `reap_dead_controller` (broker.rs:967, severed->drop ELSE stall-evict) inside the KIND_SESSIONS snapshot closure (broker.rs:2879). During the isolated brain-trial window NOTHING polls KIND_SESSIONS: the old brain was hard-killed (`child.kill()`, brainproc.rs:851) so its local controller conn black-holes (live PTYs keep writing to a dead Windows named pipe -> writer BLOCKS, never EOFs) -> `write_blocked_since=Some` -> wedged=true for the full 30s -> gate false -> `WindowElapsedAlive` -> kill+rollback. The candidate DID reach ready (write_ready, brainproc.rs:211, runs before the loop; the v53 log's NET_FAMILY_GATE/PAIR_MEET_UP prove the loop was entered) — so `BRAIN_TRIAL_TIMEOUT: candidate alive but never ready` is the MISLEADING ready-stamped-but-never-DRAINED case, NOT a resume_sessions hang. SECOND LEG (recovery): post-rollback the gen-2 brain's KIND_SESSIONS poll finally reaps -> `BRAIN_SUBSCRIBER_STALL_EVICT:1` fires >15s late -> a session stayed black-holed through recovery -> continued freeze. ONE root, BOTH legs. FIX (BRAIN-SIDE, self-applying — doyle ruled brain-side to AVOID a broker-side coordinated-restart flag): the boot/trial heartbeat loop (brainproc.rs run_brain, currently only `net_status` at :244) also issues `Brain::sessions()` (KIND_SESSIONS, brain.rs:1397 — already exists) every heartbeat, driving the LIVE older broker's ALREADY-SHIPPED reap (>=v0.29.0 LIFECYCLE-TRUTH; the field-stuck broker is v0.30.0 so it HAS it). The old-gen wedged conn is stall-evicted ~15s < the 30s window -> `old_gen_drained()` flips true -> PROMOTE; the same poll on the rollback/recovery brain reaps promptly -> no >15s black-hole -> kills the STALL_EVICT recovery leg. Drive it on the FIRST heartbeat (no one-tick wait) and on BOTH the trial candidate AND the recovery brain (one loop covers both). SELF-APPLIES because it drives the current broker's existing reap verb — v54's brain fixes the v0.30.0->v54 update with NO coordinated broker restart. Forward-compat: brokers <v0.29.0 have neither the DRAINED gate nor the reap, so older-broker updates never hit this path — no regression. Composes with REQ-UPDATE-PROMOTE-DRAINED (the gate this un-strands) + REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE (the stall-evict it drives) + REQ-CONTROLLER-LIVENESS-REAP (the reap verb). Int = the brain-swap-under-live-sessions rig: (1) with a hard-killed prior gen holding a wedged by:None controller past 15s, the new brain PROMOTES within the window AND sessions stay served across the cycle (RED-first: without the drive, WindowElapsedAlive->rollback); (2) a deliberately-failing trial auto-rolls-back AND the restored brain re-drives EVERY session with NO BRAIN_SUBSCRIBER_STALL_EVICT.",
2026-07-26T22:33:03.3642011Z       "requiredStages": [
2026-07-26T22:33:03.3642100Z         "doc",
2026-07-26T22:33:03.3642181Z         "impl",
2026-07-26T22:33:03.3642258Z         "int"
2026-07-26T22:33:03.3642330Z       ],
2026-07-26T22:33:03.3642419Z       "stages": {
2026-07-26T22:33:03.3642500Z         "doc": {
2026-07-26T22:33:03.3642588Z           "complete": true,
2026-07-26T22:33:03.3642673Z           "evidence": [
2026-07-26T22:33:03.3642748Z             {
2026-07-26T22:33:03.3642849Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.3642973Z               "line": 611
2026-07-26T22:33:03.3643054Z             }
2026-07-26T22:33:03.3643135Z           ]
2026-07-26T22:33:03.3643212Z         },
2026-07-26T22:33:03.3643302Z         "impl": {
2026-07-26T22:33:03.3643387Z           "complete": true,
2026-07-26T22:33:03.3643473Z           "evidence": [
2026-07-26T22:33:03.3643551Z             {
2026-07-26T22:33:03.3643683Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-07-26T22:33:03.3643774Z               "line": 308
2026-07-26T22:33:03.3643856Z             },
2026-07-26T22:33:03.3643936Z             {
2026-07-26T22:33:03.3644055Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.3644151Z               "line": 1180
2026-07-26T22:33:03.3644228Z             }
2026-07-26T22:33:03.3644302Z           ]
2026-07-26T22:33:03.3644383Z         },
2026-07-26T22:33:03.3644464Z         "int": {
2026-07-26T22:33:03.3644550Z           "complete": true,
2026-07-26T22:33:03.3644643Z           "evidence": [
2026-07-26T22:33:03.3644724Z             {
2026-07-26T22:33:03.3644863Z               "path": "crates/spt/tests/trial_drain_drive_e2e.rs",
2026-07-26T22:33:03.3644953Z               "line": 332
2026-07-26T22:33:03.3645034Z             },
2026-07-26T22:33:03.3645110Z             {
2026-07-26T22:33:03.3645240Z               "path": "crates/spt/tests/trial_drain_drive_e2e.rs",
2026-07-26T22:33:03.3645325Z               "line": 518
2026-07-26T22:33:03.3645411Z             },
2026-07-26T22:33:03.3645488Z             {
2026-07-26T22:33:03.3645606Z               "path": "crates/spt/tests/trial_drain_drive_e2e.rs",
2026-07-26T22:33:03.3645692Z               "line": 540
2026-07-26T22:33:03.3645774Z             }
2026-07-26T22:33:03.3645854Z           ]
2026-07-26T22:33:03.3645931Z         },
2026-07-26T22:33:03.3646011Z         "unit": {
2026-07-26T22:33:03.3646113Z           "complete": false,
2026-07-26T22:33:03.3646202Z           "evidence": []
2026-07-26T22:33:03.3646278Z         }
2026-07-26T22:33:03.3646355Z       }
2026-07-26T22:33:03.3646484Z     },
2026-07-26T22:33:03.3646560Z     {
2026-07-26T22:33:03.3646680Z       "id": "REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT",
2026-07-26T22:33:03.3651967Z       "title": "A `rc --view` VIEWER that overflows its broker subscription queue and is EVICTED (OutputLog::append try_send Full → viewers.remove, REQ-HAZARD-VIEWER-ISOLATION session-protection) must SKIP TO LIVE, not die silently. ROOT (v0.13.0, b4 JIT item 2 = p0_paste + post-b4 a_journaled-Linux, ONE root): serve_attach forwards each frame (read_event→b64decode→re-encode AttachRecord→net_stream_send) SLOWER than the drain fans out under flood → its VIEWER_CHANNEL_DEPTH(256) channel overflows → the drain evicts (viewers.remove drops the ViewerSink → drops tx → viewer_writer's rx.recv() Err → the writer returns WRITING NOTHING) → serve_attach's brain.read_event() just STOPS getting Output (no EOF, no error) → serve_attach blocks forever → the operator receives nothing (attach_received_output=FALSE). Eviction-of-a-hopelessly-behind-viewer is CORRECT session-protection (keep it); SILENT+PERMANENT eviction is the bug. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative / exposes no resume cursor). FIX (doyle-gated, skip-to-live = tail -f reconnect): (1) explicit broker→viewer EVICTION SIGNAL (KIND_VIEWER_EVICTED, written in the viewer_writer thread OFF the log lock, DISTINCT from session-exit EOF so serve must NOT tear down on it); (2) serve_attach re-subscribes from the CURRENT ring floor (skip-to-live, replays nothing, sees the next live burst) — resetting the cold serve-brain's next_seq so the post-eviction forward-jump replay is accepted (the legacy reject-gap path, brain.rs:618-626, would otherwise FATAL the forward jump); (3) HARD constraint NO evict→resubscribe busy-loop: serve_attach rate-limits re-subscribes (RESUBSCRIBE_INTERVAL) so under max-flood the operator sees intermittent LIVE bursts, never a CPU spin. (v0.13.0)",
2026-07-26T22:33:03.3652198Z       "requiredStages": [
2026-07-26T22:33:03.3652348Z         "doc",
2026-07-26T22:33:03.3652433Z         "impl",
2026-07-26T22:33:03.3652519Z         "unit",
2026-07-26T22:33:03.3652599Z         "int"
2026-07-26T22:33:03.3652693Z       ],
2026-07-26T22:33:03.3652780Z       "stages": {
2026-07-26T22:33:03.3652857Z         "doc": {
2026-07-26T22:33:03.3652947Z           "complete": true,
2026-07-26T22:33:03.3653037Z           "evidence": [
2026-07-26T22:33:03.3653119Z             {
2026-07-26T22:33:03.3653218Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.3653313Z               "line": 397
2026-07-26T22:33:03.3653394Z             }
2026-07-26T22:33:03.3653462Z           ]
2026-07-26T22:33:03.3653552Z         },
2026-07-26T22:33:03.3653633Z         "impl": {
2026-07-26T22:33:03.3653733Z           "complete": true,
2026-07-26T22:33:03.3653810Z           "evidence": [
2026-07-26T22:33:03.3653900Z             {
2026-07-26T22:33:03.3654024Z               "path": "crates/spt-daemon/src/attach.rs",
2026-07-26T22:33:03.3654116Z               "line": 566
2026-07-26T22:33:03.3654195Z             },
2026-07-26T22:33:03.3654276Z             {
2026-07-26T22:33:03.3654392Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.3654487Z               "line": 907
2026-07-26T22:33:03.3654567Z             },
2026-07-26T22:33:03.3654644Z             {
2026-07-26T22:33:03.3654745Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.3654844Z               "line": 1120
2026-07-26T22:33:03.3654924Z             },
2026-07-26T22:33:03.3655010Z             {
2026-07-26T22:33:03.3655119Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3655213Z               "line": 2400
2026-07-26T22:33:03.3655293Z             },
2026-07-26T22:33:03.3655375Z             {
2026-07-26T22:33:03.3655485Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.3655580Z               "line": 1276
2026-07-26T22:33:03.3655666Z             }
2026-07-26T22:33:03.3655742Z           ]
2026-07-26T22:33:03.3655828Z         },
2026-07-26T22:33:03.3655966Z         "int": {
2026-07-26T22:33:03.3656062Z           "complete": true,
2026-07-26T22:33:03.3656143Z           "evidence": [
2026-07-26T22:33:03.3656238Z             {
2026-07-26T22:33:03.3656382Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.3656472Z               "line": 2792
2026-07-26T22:33:03.3656543Z             }
2026-07-26T22:33:03.3656625Z           ]
2026-07-26T22:33:03.3656706Z         },
2026-07-26T22:33:03.3656792Z         "unit": {
2026-07-26T22:33:03.3656867Z           "complete": true,
2026-07-26T22:33:03.3656959Z           "evidence": [
2026-07-26T22:33:03.3657035Z             {
2026-07-26T22:33:03.3657144Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.3657225Z               "line": 2181
2026-07-26T22:33:03.3657308Z             },
2026-07-26T22:33:03.3657387Z             {
2026-07-26T22:33:03.3657502Z               "path": "crates/spt-daemon/src/brain.rs",
2026-07-26T22:33:03.3657598Z               "line": 2472
2026-07-26T22:33:03.3657679Z             },
2026-07-26T22:33:03.3657748Z             {
2026-07-26T22:33:03.3657910Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3658002Z               "line": 6436
2026-07-26T22:33:03.3658087Z             },
2026-07-26T22:33:03.3658172Z             {
2026-07-26T22:33:03.3658293Z               "path": "crates/spt-daemon/src/broker.rs",
2026-07-26T22:33:03.3658416Z               "line": 6503
2026-07-26T22:33:03.3658506Z             },
2026-07-26T22:33:03.3658589Z             {
2026-07-26T22:33:03.3658703Z               "path": "crates/spt-daemon/src/msg.rs",
2026-07-26T22:33:03.3658788Z               "line": 1594
2026-07-26T22:33:03.3658874Z             }
2026-07-26T22:33:03.3659026Z           ]
2026-07-26T22:33:03.3659102Z         }
2026-07-26T22:33:03.3659179Z       }
2026-07-26T22:33:03.3659260Z     },
2026-07-26T22:33:03.3659341Z     {
2026-07-26T22:33:03.3659441Z       "id": "REQ-WAKE-RESUME-LEG",
2026-07-26T22:33:03.3664976Z       "title": "A-2 (REMOTE-TRUTH triage §A-2 + ADR-0033): the daemon reconcile gains a WAKE-RESUME LEG — an endpoint whose rest INTENT is Active but whose harness session is COLD (status != online) is resumed by the daemon via the adapter's [session.resume] template using the LAST LEDGER session id, so a bare `spt wake <id>` on a suspended live agent actually brings it back (today: reconcile_once start-arm hosts ONLY status==online (livehost.rs:199), so a woken-but-unbound endpoint is skipped forever — neither status reaches online nor does reconcile re-host). This is the ADR-0033 LIFT: the thin `spt wake` edge writes rest intent, the DAEMON does the work. Mirrors shellwake::resolve_wake (read rest state, live-pid double-launch guard, launch, NEVER flip status — the harness self-binds → online). The leg reads the recorded adapter (D-2, REQ-SESSION-ADAPTER-RECORDED); an UNREGISTERED recorded adapter is the Q5 daemon-variant refuse: do NOT spawn, record a LOUD host_error report (F-1 naming the adapter + `spt adapter add`), never silent, never fallback-spawn on a different adapter. BINDS: (1) status=online is set ONLY by a real bind — the resume leg NEVER stamps it (CONTEXT liveness truth; the A-1 effective-state derivation depends on this staying honest). (2) host_error is a REPORT of the most recent host-level failure, NEVER a liveness input — neither liveness nor advertised_status reads it (host_error + online still derives Active); cleared on a successful host/bind; the existing silent `continue` on a deregistered online adapter (livehost.rs:205) folds into the same field. (3) the resume-pid guard marker is CUSTODY-ONLY (F-030 nested-record discipline) — never a liveness input. cold-with-no-ledger-row degrades benign (loud-logged skip, no crash, today's behavior). Single-node; C-2 picker Wake-now unblocks after. --wait is a SEPARATE rider (REQ-WAKE-WAIT).",
2026-07-26T22:33:03.3665094Z       "requiredStages": [
2026-07-26T22:33:03.3665175Z         "impl",
2026-07-26T22:33:03.3665258Z         "unit",
2026-07-26T22:33:03.3665400Z         "int"
2026-07-26T22:33:03.3665470Z       ],
2026-07-26T22:33:03.3665565Z       "stages": {
2026-07-26T22:33:03.3665646Z         "doc": {
2026-07-26T22:33:03.3665735Z           "complete": false,
2026-07-26T22:33:03.3665815Z           "evidence": []
2026-07-26T22:33:03.3665902Z         },
2026-07-26T22:33:03.3665979Z         "impl": {
2026-07-26T22:33:03.3666078Z           "complete": true,
2026-07-26T22:33:03.3666168Z           "evidence": [
2026-07-26T22:33:03.3666255Z             {
2026-07-26T22:33:03.3666402Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.3666521Z               "line": 217
2026-07-26T22:33:03.3666594Z             },
2026-07-26T22:33:03.3666674Z             {
2026-07-26T22:33:03.3666793Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.3666880Z               "line": 324
2026-07-26T22:33:03.3666961Z             },
2026-07-26T22:33:03.3667032Z             {
2026-07-26T22:33:03.3667150Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.3667262Z               "line": 361
2026-07-26T22:33:03.3667422Z             },
2026-07-26T22:33:03.3667509Z             {
2026-07-26T22:33:03.3667623Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.3667709Z               "line": 190
2026-07-26T22:33:03.3667790Z             },
2026-07-26T22:33:03.3667915Z             {
2026-07-26T22:33:03.3668024Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.3668110Z               "line": 580
2026-07-26T22:33:03.3668201Z             },
2026-07-26T22:33:03.3668276Z             {
2026-07-26T22:33:03.3668380Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3668466Z               "line": 3983
2026-07-26T22:33:03.3668543Z             }
2026-07-26T22:33:03.3668619Z           ]
2026-07-26T22:33:03.3668699Z         },
2026-07-26T22:33:03.3668781Z         "int": {
2026-07-26T22:33:03.3668872Z           "complete": true,
2026-07-26T22:33:03.3669076Z           "evidence": [
2026-07-26T22:33:03.3669154Z             {
2026-07-26T22:33:03.3669267Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.3669362Z               "line": 2341
2026-07-26T22:33:03.3669434Z             },
2026-07-26T22:33:03.3669510Z             {
2026-07-26T22:33:03.3669629Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.3669720Z               "line": 2371
2026-07-26T22:33:03.3669797Z             },
2026-07-26T22:33:03.3669892Z             {
2026-07-26T22:33:03.3670001Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.3670084Z               "line": 2400
2026-07-26T22:33:03.3670164Z             },
2026-07-26T22:33:03.3670254Z             {
2026-07-26T22:33:03.3670359Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.3670451Z               "line": 2423
2026-07-26T22:33:03.3670530Z             },
2026-07-26T22:33:03.3670615Z             {
2026-07-26T22:33:03.3670735Z               "path": "crates/spt/tests/twohost_cli.rs",
2026-07-26T22:33:03.3670815Z               "line": 631
2026-07-26T22:33:03.3670899Z             }
2026-07-26T22:33:03.3670989Z           ]
2026-07-26T22:33:03.3671062Z         },
2026-07-26T22:33:03.3671153Z         "unit": {
2026-07-26T22:33:03.3671233Z           "complete": true,
2026-07-26T22:33:03.3671324Z           "evidence": [
2026-07-26T22:33:03.3671395Z             {
2026-07-26T22:33:03.3671505Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.3671595Z               "line": 2293
2026-07-26T22:33:03.3671677Z             },
2026-07-26T22:33:03.3671767Z             {
2026-07-26T22:33:03.3671891Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-07-26T22:33:03.3671992Z               "line": 2151
2026-07-26T22:33:03.3672082Z             },
2026-07-26T22:33:03.3672172Z             {
2026-07-26T22:33:03.3672277Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.3672373Z               "line": 1284
2026-07-26T22:33:03.3672511Z             }
2026-07-26T22:33:03.3672597Z           ]
2026-07-26T22:33:03.3672669Z         }
2026-07-26T22:33:03.3672764Z       }
2026-07-26T22:33:03.3672840Z     },
2026-07-26T22:33:03.3672926Z     {
2026-07-26T22:33:03.3673012Z       "id": "REQ-WAKE-WAIT",
2026-07-26T22:33:03.3674825Z       "title": "A-2 rider (REMOTE-TRUTH triage §A-2): `spt endpoint wake --wait` blocks on the REAL bind (status reaches online) after the daemon wake-resume lift (REQ-WAKE-RESUME-LEG), instead of the DEFAULT accepted-not-bound print (thin edge writes intent, daemon lifts async — ADR-0033). Reuses the F-027 bind-await machinery if/when it lands, else a bounded poll on status==online with a plain-language timeout (no core lingo, F-1). Default wake is UNCHANGED (accepted-not-bound truth). Separate chunk from the core leg (doyle A-2 ruling: C-2 needs the core leg, not --wait); F-027 bind-await stays design-only until this activates.",
2026-07-26T22:33:03.3674935Z       "requiredStages": [],
2026-07-26T22:33:03.3675030Z       "stages": {
2026-07-26T22:33:03.3675110Z         "doc": {
2026-07-26T22:33:03.3675207Z           "complete": false,
2026-07-26T22:33:03.3675349Z           "evidence": []
2026-07-26T22:33:03.3675435Z         },
2026-07-26T22:33:03.3675527Z         "impl": {
2026-07-26T22:33:03.3675608Z           "complete": false,
2026-07-26T22:33:03.3675702Z           "evidence": []
2026-07-26T22:33:03.3675832Z         },
2026-07-26T22:33:03.3675918Z         "int": {
2026-07-26T22:33:03.3675997Z           "complete": false,
2026-07-26T22:33:03.3676092Z           "evidence": []
2026-07-26T22:33:03.3676173Z         },
2026-07-26T22:33:03.3676263Z         "unit": {
2026-07-26T22:33:03.3676357Z           "complete": false,
2026-07-26T22:33:03.3676452Z           "evidence": []
2026-07-26T22:33:03.3676534Z         }
2026-07-26T22:33:03.3676615Z       }
2026-07-26T22:33:03.3676695Z     },
2026-07-26T22:33:03.3676776Z     {
2026-07-26T22:33:03.3676882Z       "id": "REQ-WAN-SEND-DELIVERY",
2026-07-26T22:33:03.3679170Z       "title": "Bug #9/#10: cross-node spt send reports SENT(WAN) but does not deliver, even on stable-IP pairs. Real root: spt send resolves the dial with id-only addr_for_node_hex (endpoint.rs:538) which forces a fresh iroh discovery round-trip every send, while the gossip pump uses cached direct addresses (dial_seeded/PeerAddrStore) so gossip stays green but send rides a marginal discovery path that cannot carry the fire-and-forget payload; the handshake completes so SENT(WAN) prints falsely. Fix: (1) route the WAN dial through the pump seeded-direct-address resolution (PeerAddrStore first, id-only fallback); (2) receiver writes its WanOutcome back so the sender confirms delivery under the QUIC deadline and only reports SENT on confirmed delivery, honest failure otherwise. Access-gate/perch/spool all verified correct (ruled out). See docs/NEXT-MILESTONE-BUG-TRIAGE.md #9-10.",
2026-07-26T22:33:03.3679279Z       "requiredStages": [
2026-07-26T22:33:03.3679360Z         "impl",
2026-07-26T22:33:03.3679451Z         "unit",
2026-07-26T22:33:03.3679526Z         "int"
2026-07-26T22:33:03.3679608Z       ],
2026-07-26T22:33:03.3679690Z       "stages": {
2026-07-26T22:33:03.3679765Z         "doc": {
2026-07-26T22:33:03.3679851Z           "complete": false,
2026-07-26T22:33:03.3679936Z           "evidence": []
2026-07-26T22:33:03.3680009Z         },
2026-07-26T22:33:03.3680094Z         "impl": {
2026-07-26T22:33:03.3680189Z           "complete": true,
2026-07-26T22:33:03.3680280Z           "evidence": [
2026-07-26T22:33:03.3680358Z             {
2026-07-26T22:33:03.3680485Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:03.3680566Z               "line": 134
2026-07-26T22:33:03.3680648Z             },
2026-07-26T22:33:03.3680724Z             {
2026-07-26T22:33:03.3680823Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:03.3680900Z               "line": 173
2026-07-26T22:33:03.3680983Z             },
2026-07-26T22:33:03.3681058Z             {
2026-07-26T22:33:03.3681218Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:03.3681304Z               "line": 193
2026-07-26T22:33:03.3681398Z             },
2026-07-26T22:33:03.3681479Z             {
2026-07-26T22:33:03.3681597Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-07-26T22:33:03.3681679Z               "line": 74
2026-07-26T22:33:03.3681760Z             },
2026-07-26T22:33:03.3681840Z             {
2026-07-26T22:33:03.3681956Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.3682032Z               "line": 74
2026-07-26T22:33:03.3682117Z             },
2026-07-26T22:33:03.3682198Z             {
2026-07-26T22:33:03.3682299Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.3682380Z               "line": 327
2026-07-26T22:33:03.3682456Z             }
2026-07-26T22:33:03.3682528Z           ]
2026-07-26T22:33:03.3682609Z         },
2026-07-26T22:33:03.3682680Z         "int": {
2026-07-26T22:33:03.3682775Z           "complete": true,
2026-07-26T22:33:03.3682857Z           "evidence": [
2026-07-26T22:33:03.3682947Z             {
2026-07-26T22:33:03.3683052Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.3683225Z               "line": 1133
2026-07-26T22:33:03.3683304Z             }
2026-07-26T22:33:03.3683391Z           ]
2026-07-26T22:33:03.3683472Z         },
2026-07-26T22:33:03.3683545Z         "unit": {
2026-07-26T22:33:03.3683700Z           "complete": true,
2026-07-26T22:33:03.3683792Z           "evidence": [
2026-07-26T22:33:03.3683911Z             {
2026-07-26T22:33:03.3684014Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:03.3684114Z               "line": 351
2026-07-26T22:33:03.3684191Z             },
2026-07-26T22:33:03.3684279Z             {
2026-07-26T22:33:03.3684388Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-07-26T22:33:03.3684484Z               "line": 199
2026-07-26T22:33:03.3684561Z             },
2026-07-26T22:33:03.3684684Z             {
2026-07-26T22:33:03.3684789Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.3684880Z               "line": 1059
2026-07-26T22:33:03.3684956Z             },
2026-07-26T22:33:03.3685041Z             {
2026-07-26T22:33:03.3685142Z               "path": "crates/spt/src/wansend.rs",
2026-07-26T22:33:03.3685242Z               "line": 1101
2026-07-26T22:33:03.3685323Z             }
2026-07-26T22:33:03.3685409Z           ]
2026-07-26T22:33:03.3685486Z         }
2026-07-26T22:33:03.3685576Z       }
2026-07-26T22:33:03.3685657Z     },
2026-07-26T22:33:03.3685743Z     {
2026-07-26T22:33:03.3685848Z       "id": "REQ-WAN-SPT-HOSTED-DELIVERY",
2026-07-26T22:33:03.3689481Z       "title": "A WAN-ARRIVED `spt send` is DELIVERED to an spt-hosted endpoint (broker holds its PTY, NO api-listen relay), not spooled-forever. Today receive_wan (spt-daemon/wan.rs:271-276) tries deliver_tcp (the harness-hosted relay leg) then falls to spool — it has NO spt-hosted broker-inject leg, which exists ONLY in local cmd_send (REQ-SEND-SPT-HOSTED, Brain::inject_endpoint → KIND_ENDPOINT_INPUT → broker dispatch_endpoint_input → translation-binary idle-inject). So a WAN arrival to an idle spt-hosted perch with a live translation binary ALWAYS sleeps in spool until an adapter hook polls (F-023: perch verifiably idle 7min, binary healthy, zero injection). FIX: factor cmd_send's spt-hosted delivery leg into a SHARED fn; receive_wan calls it after the replay-check (wan_seen_at) + restamp (restamp_wan_user_msg), BEFORE the spool fallback. Claim discipline UNCHANGED: inject delivered=true → wan_mark_seen_at then return the existing 'delivered' wire token (no wire change); delivered=false → the existing spool-with-claim transaction. v0.14.3 LAW: the shared leg is translation-binary-ONLY, NO raw-PTY fallback — a no-binary arrival SPOOLS LOUD, never writes the PTY. (F-023, BUILD-F023-WANIDLE)",
2026-07-26T22:33:03.3689591Z       "requiredStages": [
2026-07-26T22:33:03.3689682Z         "impl",
2026-07-26T22:33:03.3689772Z         "unit",
2026-07-26T22:33:03.3689920Z         "int"
2026-07-26T22:33:03.3689992Z       ],
2026-07-26T22:33:03.3690082Z       "stages": {
2026-07-26T22:33:03.3690163Z         "doc": {
2026-07-26T22:33:03.3690259Z           "complete": false,
2026-07-26T22:33:03.3690340Z           "evidence": []
2026-07-26T22:33:03.3690416Z         },
2026-07-26T22:33:03.3690497Z         "impl": {
2026-07-26T22:33:03.3690598Z           "complete": true,
2026-07-26T22:33:03.3690692Z           "evidence": [
2026-07-26T22:33:03.3690773Z             {
2026-07-26T22:33:03.3690889Z               "path": "crates/spt-daemon/src/inject.rs",
2026-07-26T22:33:03.3690979Z               "line": 35
2026-07-26T22:33:03.3691050Z             },
2026-07-26T22:33:03.3691131Z             {
2026-07-26T22:33:03.3691242Z               "path": "crates/spt-daemon/src/inject.rs",
2026-07-26T22:33:03.3691340Z               "line": 73
2026-07-26T22:33:03.3691412Z             },
2026-07-26T22:33:03.3691499Z             {
2026-07-26T22:33:03.3691604Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:03.3691698Z               "line": 313
2026-07-26T22:33:03.3691778Z             }
2026-07-26T22:33:03.3691916Z           ]
2026-07-26T22:33:03.3692000Z         },
2026-07-26T22:33:03.3692081Z         "int": {
2026-07-26T22:33:03.3692157Z           "complete": true,
2026-07-26T22:33:03.3692249Z           "evidence": [
2026-07-26T22:33:03.3692329Z             {
2026-07-26T22:33:03.3692530Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-07-26T22:33:03.3692611Z               "line": 2888
2026-07-26T22:33:03.3692701Z             }
2026-07-26T22:33:03.3692778Z           ]
2026-07-26T22:33:03.3692859Z         },
2026-07-26T22:33:03.3692940Z         "unit": {
2026-07-26T22:33:03.3693035Z           "complete": true,
2026-07-26T22:33:03.3693122Z           "evidence": [
2026-07-26T22:33:03.3693202Z             {
2026-07-26T22:33:03.3693316Z               "path": "crates/spt-daemon/src/inject.rs",
2026-07-26T22:33:03.3693451Z               "line": 194
2026-07-26T22:33:03.3693545Z             },
2026-07-26T22:33:03.3693616Z             {
2026-07-26T22:33:03.3693727Z               "path": "crates/spt-daemon/src/wan.rs",
2026-07-26T22:33:03.3693818Z               "line": 473
2026-07-26T22:33:03.3693907Z             }
2026-07-26T22:33:03.3693989Z           ]
2026-07-26T22:33:03.3694061Z         }
2026-07-26T22:33:03.3694137Z       }
2026-07-26T22:33:03.3694222Z     },
2026-07-26T22:33:03.3694294Z     {
2026-07-26T22:33:03.3694395Z       "id": "REQ-WHOAMI-1",
2026-07-26T22:33:03.3696574Z       "title": "The `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state; whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9) and renders the same description-carrying SELF pin. HISTORY: originally minted whoami as a thin ALIAS of `spt endpoint list` — that alias premise is SUPERSEDED by REQ-WHOAMI-IDENTITY-ONLY (PROJECT-INDEX W1, 2026-07-15): the alias inherited the list's O(perches x branches) git fanout onto hook paths (the 2026-07-15 message-delivery incident), so whoami is now identity-only over the shared render_self_pin. The pin render + parse evidence here stands; the full-roster surface lives solely on `endpoint list`.",
2026-07-26T22:33:03.3696680Z       "requiredStages": [
2026-07-26T22:33:03.3696765Z         "doc",
2026-07-26T22:33:03.3696847Z         "impl",
2026-07-26T22:33:03.3696928Z         "unit"
2026-07-26T22:33:03.3697005Z       ],
2026-07-26T22:33:03.3697080Z       "stages": {
2026-07-26T22:33:03.3697155Z         "doc": {
2026-07-26T22:33:03.3697250Z           "complete": true,
2026-07-26T22:33:03.3697326Z           "evidence": [
2026-07-26T22:33:03.3697402Z             {
2026-07-26T22:33:03.3697505Z               "path": "CONTEXT.md",
2026-07-26T22:33:03.3697596Z               "line": 818
2026-07-26T22:33:03.3697674Z             }
2026-07-26T22:33:03.3697754Z           ]
2026-07-26T22:33:03.3697834Z         },
2026-07-26T22:33:03.3697988Z         "impl": {
2026-07-26T22:33:03.3698078Z           "complete": true,
2026-07-26T22:33:03.3698168Z           "evidence": [
2026-07-26T22:33:03.3698255Z             {
2026-07-26T22:33:03.3698364Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3698454Z               "line": 7432
2026-07-26T22:33:03.3698541Z             }
2026-07-26T22:33:03.3698622Z           ]
2026-07-26T22:33:03.3698712Z         },
2026-07-26T22:33:03.3698797Z         "int": {
2026-07-26T22:33:03.3698890Z           "complete": false,
2026-07-26T22:33:03.3699075Z           "evidence": []
2026-07-26T22:33:03.3699165Z         },
2026-07-26T22:33:03.3699247Z         "unit": {
2026-07-26T22:33:03.3699341Z           "complete": true,
2026-07-26T22:33:03.3699422Z           "evidence": [
2026-07-26T22:33:03.3699505Z             {
2026-07-26T22:33:03.3699609Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3699699Z               "line": 15312
2026-07-26T22:33:03.3699786Z             },
2026-07-26T22:33:03.3699867Z             {
2026-07-26T22:33:03.3699966Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3700122Z               "line": 15415
2026-07-26T22:33:03.3700204Z             }
2026-07-26T22:33:03.3700290Z           ]
2026-07-26T22:33:03.3700365Z         }
2026-07-26T22:33:03.3700437Z       }
2026-07-26T22:33:03.3700514Z     },
2026-07-26T22:33:03.3700600Z     {
2026-07-26T22:33:03.3700756Z       "id": "REQ-WHOAMI-EXPLICIT-SID-REFUSAL",
2026-07-26T22:33:03.3712362Z       "title": "RULED DESIGN, delivery unowned (doyle 2026-07-26): when a caller hands identity resolution an EXPLICIT non-empty $OWL_SESSION_ID that resolves to NO perch, core must REFUSE identity (unresolved, exit 1, loud distinct diagnostic) rather than fall through to an ambient/inherited one — today `detect_self_id` (roster.rs, legs a→b→b2→c) treats sid-UNMATCHED identically to sid-ABSENT, so the fallback chain re-adopts precisely the identity a sharper claim just failed to prove. MEASURED (perri, this node, 2026-07-26, three read-only whoami calls from a genuine descendant of the perri host process): (1) all SPT_*/OWL_* scrubbed → id null, exit 1 — ancestry resolved nothing (caveat honored from the probe: the perch's recorded pid was not in the caller's chain, so this run refutes lineage-as-the-mechanism for probe v1 without disproving a lineage path in general); (2) inherited SPT_ENDPOINT_ID=perri + explicit OWL_SESSION_ID matching no perch → perri, exit 0 — the mismatch datum was IN HAND (core had already scanned and failed to match the explicit sid) and the ambient id won anyway; (3) real OWL_SESSION_ID with endpoint id scrubbed → correct self — the healthy path any fix must leave untouched. SCOPE OF THE REFUSAL, ruled: only sid-PRESENT-AND-UNMATCHED poisons the fallback, and it poisons ALL weaker legs (b SPT_AGENT_ID, b2 SPT_ENDPOINT_ID, c pid-ancestry) — an explicit failed claim outranks every ambient claim below it; sid-ABSENT/empty keeps today's full chain unchanged, because the leg-b2 field root (live-repro'd 2026-07-10: the adapter surfaces OWL_SESSION_ID to the session shell as an UNEXPORTED var, so the child process legitimately carries endpoint id without sid) is exactly the flow the guard must not break — that flow is sid-absent, never sid-mismatched. WHY CORE AND NOT ONLY THE ADAPTER: the measured entry path is closed adapter-side (perri's REQ-HAZARD-INHERITED-IDENTITY-ADOPTION @ their a7558aa + claude-spt KNOWN-HAZARDS 7.4, shipped: whoami child calls scrub SPT_ENDPOINT_ID/SPT_AGENT_ID; rig discipline now detached AND env-scrubbed — the scrub is the operative half), but the inconsistency being fixed is CORE'S: the adapter fastpath's verified_env_id REFUSES an inherited SPT_ENDPOINT_ID on carrier-proof mismatch (carrier sid != payload sid) and core's fallback then RE-GRANTS what that layer just refused — one layer's refusal must not be another layer's grant, and every other harness/adapter gets the defense only if core holds it. SEVERITY UPGRADE recorded at mint: unlike the KH 7.1–7.3 shapes (lost reads), this adoption was WRITE-CAPABLE in the field — the adopting descendant re-pointed the ANCESTOR's session pin, so the ancestor went dark while the descendant looked healthy (perri's own pin, probe v1). KIN, same review same milestone: leg (b) SPT_AGENT_ID returns UNCONDITIONALLY today — not even perch-checked, weaker than leg b2's bound-perch gate; align it when this lands. MEASURED on the live node, not just code-read (perri, same probe run, reported 2026-07-26): SPT_AGENT_ID=nobody-xyz with a bogus OWL_SESSION_ID returned {'id':'nobody-xyz','ready':false,'alive':true,'unbound':false}, exit 0 — a phantom identity for an endpoint that does not exist, beating both the sid leg and ancestry; the returned shape has no state key and ready:false but a populated id, and the adapter parser takes .id first, so a whoami-trusting adapter writes state under the phantom — the same write-capable class as the inherited-adoption case, sourced from a made-up name instead of a real ancestor. perri's adapter scrub covers SPT_AGENT_ID as well as SPT_ENDPOINT_ID for exactly this reason. POSTURE UNCHANGED: whoami legs remain from-label/routing only, never authentication (KH 7.3/7.5, F-024 stays parked) — refusal tightens label discipline, it promotes nothing to auth. Gate at activation: unit — sid-unmatched + ambient endpoint id present → refusal with the distinct diagnostic (probe shape 2 goes loud); sid-absent + ambient endpoint id on a bound perch → still resolves (leg-b2 field root preserved); sid-matched → unchanged (probe shape 3).",
2026-07-26T22:33:03.3712734Z       "requiredStages": [],
2026-07-26T22:33:03.3712822Z       "stages": {
2026-07-26T22:33:03.3712903Z         "doc": {
2026-07-26T22:33:03.3712994Z           "complete": false,
2026-07-26T22:33:03.3713088Z           "evidence": []
2026-07-26T22:33:03.3713168Z         },
2026-07-26T22:33:03.3713254Z         "impl": {
2026-07-26T22:33:03.3713341Z           "complete": false,
2026-07-26T22:33:03.3713431Z           "evidence": []
2026-07-26T22:33:03.3713540Z         },
2026-07-26T22:33:03.3713626Z         "int": {
2026-07-26T22:33:03.3713707Z           "complete": false,
2026-07-26T22:33:03.3713807Z           "evidence": []
2026-07-26T22:33:03.3713888Z         },
2026-07-26T22:33:03.3713975Z         "unit": {
2026-07-26T22:33:03.3714065Z           "complete": false,
2026-07-26T22:33:03.3714155Z           "evidence": []
2026-07-26T22:33:03.3714237Z         }
2026-07-26T22:33:03.3714318Z       }
2026-07-26T22:33:03.3714399Z     },
2026-07-26T22:33:03.3714489Z     {
2026-07-26T22:33:03.3714590Z       "id": "REQ-WHOAMI-IDENTITY-ONLY",
2026-07-26T22:33:03.3717609Z       "title": "PROJECT-INDEX W1 (F-040, perri filing claude-spt docs/SPT-CORE-FINDINGS.md @d775b38; correctness-critical opener — the 2026-07-15 message-bodies incident root): a core IDENTITY-ONLY resolution — session -> endpoint|null — that touches NO list/registry/project/git/network path, and `spt whoami` DE-ALIASED from cmd_endpoint_list (cli.rs ~6609 aliases the full list = 100+ git children under hook deadlines). endpoint-info is DISQUALIFIED as the carrier (runs latest_project_ref). Adapters/hooks get a bounded-time identity verb; the harness-hosted adapter fallback stays deadline-vulnerable until this ships. Gate: impl — the resolver + whoami de-alias; unit — resolver returns endpoint|null with zero project derivation (assert no git spawn seam); int — whoami on a multi-perch home answers fast-path without touching context branches; doc — harness-contract api.md names the identity verb + its no-derivation bound. Kin REQ-PROJECT-INDEX-READER-CUTOVER (list-shaped verbs), REQ-WHOAMI-1, docs/PROJECT-INDEX-TRIAGE.md.",
2026-07-26T22:33:03.3717729Z       "requiredStages": [
2026-07-26T22:33:03.3717815Z         "doc",
2026-07-26T22:33:03.3717909Z         "impl",
2026-07-26T22:33:03.3717991Z         "unit",
2026-07-26T22:33:03.3718077Z         "int"
2026-07-26T22:33:03.3718158Z       ],
2026-07-26T22:33:03.3718247Z       "stages": {
2026-07-26T22:33:03.3718332Z         "doc": {
2026-07-26T22:33:03.3718433Z           "complete": true,
2026-07-26T22:33:03.3718564Z           "evidence": [
2026-07-26T22:33:03.3718635Z             {
2026-07-26T22:33:03.3718760Z               "path": "docs-site/src/harness-contract/api.md",
2026-07-26T22:33:03.3718855Z               "line": 378
2026-07-26T22:33:03.3718931Z             }
2026-07-26T22:33:03.3719108Z           ]
2026-07-26T22:33:03.3719189Z         },
2026-07-26T22:33:03.3719279Z         "impl": {
2026-07-26T22:33:03.3719356Z           "complete": true,
2026-07-26T22:33:03.3719446Z           "evidence": [
2026-07-26T22:33:03.3719532Z             {
2026-07-26T22:33:03.3719642Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3719728Z               "line": 7501
2026-07-26T22:33:03.3719804Z             }
2026-07-26T22:33:03.3719884Z           ]
2026-07-26T22:33:03.3719966Z         },
2026-07-26T22:33:03.3720043Z         "int": {
2026-07-26T22:33:03.3720147Z           "complete": true,
2026-07-26T22:33:03.3720237Z           "evidence": [
2026-07-26T22:33:03.3720315Z             {
2026-07-26T22:33:03.3720447Z               "path": "crates/spt/tests/whoami_identity_e2e.rs",
2026-07-26T22:33:03.3720538Z               "line": 14
2026-07-26T22:33:03.3720701Z             }
2026-07-26T22:33:03.3720781Z           ]
2026-07-26T22:33:03.3720863Z         },
2026-07-26T22:33:03.3720954Z         "unit": {
2026-07-26T22:33:03.3721044Z           "complete": true,
2026-07-26T22:33:03.3721190Z           "evidence": [
2026-07-26T22:33:03.3721271Z             {
2026-07-26T22:33:03.3721387Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3721472Z               "line": 15417
2026-07-26T22:33:03.3721557Z             },
2026-07-26T22:33:03.3721634Z             {
2026-07-26T22:33:03.3721739Z               "path": "crates/spt/src/roster.rs",
2026-07-26T22:33:03.3721824Z               "line": 518
2026-07-26T22:33:03.3721901Z             }
2026-07-26T22:33:03.3721983Z           ]
2026-07-26T22:33:03.3722064Z         }
2026-07-26T22:33:03.3722143Z       }
2026-07-26T22:33:03.3722278Z     },
2026-07-26T22:33:03.3722363Z     {
2026-07-26T22:33:03.3722463Z       "id": "REQ-WORKER-LIST-VISIBILITY",
2026-07-26T22:33:03.3724301Z       "title": "V-1 (WORKER-TRUTH triage, operator rider): worker perches leave the DEFAULT `spt endpoint list` view — they are process-local machinery, not subnet citizens; leaked-or-live worker rows rendering as permanent OFFLINE endpoints is the operator-visible symptom root. A dedicated flag (--workers) reveals them (one command + flag per the --all/--detail precedent, NOT a separate list-working command — sister divergence deliberate). Applies to the human render, --json (additive default-absent filter), and the registry/projection legs; verify-and-stop any worker gossip into the subnet registry as peer endpoints.",
2026-07-26T22:33:03.3724405Z       "requiredStages": [
2026-07-26T22:33:03.3724487Z         "impl",
2026-07-26T22:33:03.3724568Z         "int"
2026-07-26T22:33:03.3724653Z       ],
2026-07-26T22:33:03.3724729Z       "stages": {
2026-07-26T22:33:03.3724826Z         "doc": {
2026-07-26T22:33:03.3724916Z           "complete": false,
2026-07-26T22:33:03.3725006Z           "evidence": []
2026-07-26T22:33:03.3725082Z         },
2026-07-26T22:33:03.3725169Z         "impl": {
2026-07-26T22:33:03.3725259Z           "complete": true,
2026-07-26T22:33:03.3725354Z           "evidence": [
2026-07-26T22:33:03.3725432Z             {
2026-07-26T22:33:03.3725531Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3725626Z               "line": 3155
2026-07-26T22:33:03.3725707Z             },
2026-07-26T22:33:03.3725790Z             {
2026-07-26T22:33:03.3725893Z               "path": "crates/spt/src/cli.rs",
2026-07-26T22:33:03.3725984Z               "line": 3170
2026-07-26T22:33:03.3726061Z             }
2026-07-26T22:33:03.3726157Z           ]
2026-07-26T22:33:03.3726231Z         },
2026-07-26T22:33:03.3726321Z         "int": {
2026-07-26T22:33:03.3726407Z           "complete": true,
2026-07-26T22:33:03.3726502Z           "evidence": [
2026-07-26T22:33:03.3726643Z             {
2026-07-26T22:33:03.3726777Z               "path": "crates/spt/tests/worker_visibility_e2e.rs",
2026-07-26T22:33:03.3726858Z               "line": 18
2026-07-26T22:33:03.3726953Z             },
2026-07-26T22:33:03.3727030Z             {
2026-07-26T22:33:03.3727154Z               "path": "crates/spt/tests/worker_visibility_e2e.rs",
2026-07-26T22:33:03.3727243Z               "line": 79
2026-07-26T22:33:03.3727335Z             }
2026-07-26T22:33:03.3727412Z           ]
2026-07-26T22:33:03.3727502Z         },
2026-07-26T22:33:03.3727592Z         "unit": {
2026-07-26T22:33:03.3727688Z           "complete": false,
2026-07-26T22:33:03.3727764Z           "evidence": []
2026-07-26T22:33:03.3727845Z         }
2026-07-26T22:33:03.3727926Z       }
2026-07-26T22:33:03.3728018Z     },
2026-07-26T22:33:03.3728093Z     {
2026-07-26T22:33:03.3728221Z       "id": "REQ-WORKER-MINTED-NAME",
2026-07-26T22:33:03.3729858Z       "title": "N-1 (WORKER-TRUTH triage, operator rider): worker perch identity is CORE-MINTED and parent-derived — `{parent}-w{N}` with a per-parent counter at registration (sister shape: claude_skill_owl hook_subagent_start.rs) — never the adapter-presented agent id (CC Task ids render as random-named rows). worker-start mints + echoes the id (WORKER_STARTED:{parent}-w{N}); the adapter's agent_id/agent_type ride the record as correlation METADATA, not identity. Verb-shape contract change — freeze with W-2 in ONE coordination with perri.",
2026-07-26T22:33:03.3730073Z       "requiredStages": [
2026-07-26T22:33:03.3730154Z         "doc",
2026-07-26T22:33:03.3730241Z         "impl",
2026-07-26T22:33:03.3730335Z         "unit",
2026-07-26T22:33:03.3730412Z         "int"
2026-07-26T22:33:03.3730497Z       ],
2026-07-26T22:33:03.3730580Z       "stages": {
2026-07-26T22:33:03.3730669Z         "doc": {
2026-07-26T22:33:03.3730745Z           "complete": true,
2026-07-26T22:33:03.3730841Z           "evidence": [
2026-07-26T22:33:03.3730918Z             {
2026-07-26T22:33:03.3731103Z               "path": "docs-site/src/harness-contract/api.md",
2026-07-26T22:33:03.3731199Z               "line": 290
2026-07-26T22:33:03.3731280Z             }
2026-07-26T22:33:03.3731365Z           ]
2026-07-26T22:33:03.3731451Z         },
2026-07-26T22:33:03.3731534Z         "impl": {
2026-07-26T22:33:03.3731632Z           "complete": true,
2026-07-26T22:33:03.3731722Z           "evidence": [
2026-07-26T22:33:03.3731865Z             {
2026-07-26T22:33:03.3732003Z               "path": "crates/spt-store/src/worker_seq.rs",
2026-07-26T22:33:03.3732127Z               "line": 31
2026-07-26T22:33:03.3732252Z             },
2026-07-26T22:33:03.3732351Z             {
2026-07-26T22:33:03.3732466Z               "path": "crates/spt-store/src/worker_seq.rs",
2026-07-26T22:33:03.3732590Z               "line": 39
2026-07-26T22:33:03.3732675Z             },
2026-07-26T22:33:03.3732775Z             {
2026-07-26T22:33:03.3732962Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:03.3733110Z               "line": 45
2026-07-26T22:33:03.3733191Z             }
2026-07-26T22:33:03.3733281Z           ]
2026-07-26T22:33:03.3733366Z         },
2026-07-26T22:33:03.3733449Z         "int": {
2026-07-26T22:33:03.3733539Z           "complete": true,
2026-07-26T22:33:03.3733619Z           "evidence": [
2026-07-26T22:33:03.3733691Z             {
2026-07-26T22:33:03.3733825Z               "path": "crates/spt/tests/worker_lifecycle_e2e.rs",
2026-07-26T22:33:03.3733910Z               "line": 25
2026-07-26T22:33:03.3733995Z             },
2026-07-26T22:33:03.3734071Z             {
2026-07-26T22:33:03.3734199Z               "path": "crates/spt/tests/worker_lifecycle_e2e.rs",
2026-07-26T22:33:03.3734288Z               "line": 95
2026-07-26T22:33:03.3734364Z             }
2026-07-26T22:33:03.3734446Z           ]
2026-07-26T22:33:03.3734528Z         },
2026-07-26T22:33:03.3734607Z         "unit": {
2026-07-26T22:33:03.3734698Z           "complete": true,
2026-07-26T22:33:03.3734781Z           "evidence": [
2026-07-26T22:33:03.3734861Z             {
2026-07-26T22:33:03.3735033Z               "path": "crates/spt-store/src/info.rs",
2026-07-26T22:33:03.3735124Z               "line": 819
2026-07-26T22:33:03.3735213Z             },
2026-07-26T22:33:03.3735294Z             {
2026-07-26T22:33:03.3735415Z               "path": "crates/spt-store/src/worker_seq.rs",
2026-07-26T22:33:03.3735500Z               "line": 74
2026-07-26T22:33:03.3735580Z             },
2026-07-26T22:33:03.3735657Z             {
2026-07-26T22:33:03.3735776Z               "path": "crates/spt-store/src/worker_seq.rs",
2026-07-26T22:33:03.3735857Z               "line": 88
2026-07-26T22:33:03.3735938Z             },
2026-07-26T22:33:03.3736020Z             {
2026-07-26T22:33:03.3736138Z               "path": "crates/spt-store/src/worker_seq.rs",
2026-07-26T22:33:03.3736219Z               "line": 111
2026-07-26T22:33:03.3736297Z             },
2026-07-26T22:33:03.3736373Z             {
2026-07-26T22:33:03.3736481Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:03.3736568Z               "line": 925
2026-07-26T22:33:03.3736664Z             },
2026-07-26T22:33:03.3736749Z             {
2026-07-26T22:33:03.3737015Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:03.3737104Z               "line": 208
2026-07-26T22:33:03.3737184Z             }
2026-07-26T22:33:03.3737261Z           ]
2026-07-26T22:33:03.3737338Z         }
2026-07-26T22:33:03.3737460Z       }
2026-07-26T22:33:03.3737546Z     },
2026-07-26T22:33:03.3737629Z     {
2026-07-26T22:33:03.3737743Z       "id": "REQ-WORKER-PICKER-EXCLUDED",
2026-07-26T22:33:03.3739038Z       "title": "V-2 (WORKER-TRUTH triage, operator rider): non-drivable endpoint classes never render as `spt endpoint run` picker rows — a worker perch cannot be driven, instantiated, or controlled; offering it is a lie the picker then fails on. Filter endpoint_type worker (and the psyche class if it ever surfaces — same non-drivable family) at every picker source leg, extend-not-multiply for future non-drivable classes.",
2026-07-26T22:33:03.3739207Z       "requiredStages": [
2026-07-26T22:33:03.3739315Z         "impl",
2026-07-26T22:33:03.3739391Z         "unit"
2026-07-26T22:33:03.3739481Z       ],
2026-07-26T22:33:03.3739567Z       "stages": {
2026-07-26T22:33:03.3739647Z         "doc": {
2026-07-26T22:33:03.3739736Z           "complete": false,
2026-07-26T22:33:03.3739827Z           "evidence": []
2026-07-26T22:33:03.3739899Z         },
2026-07-26T22:33:03.3739980Z         "impl": {
2026-07-26T22:33:03.3740075Z           "complete": true,
2026-07-26T22:33:03.3740166Z           "evidence": [
2026-07-26T22:33:03.3740252Z             {
2026-07-26T22:33:03.3740370Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.3740457Z               "line": 204
2026-07-26T22:33:03.3740543Z             },
2026-07-26T22:33:03.3740629Z             {
2026-07-26T22:33:03.3740742Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.3740820Z               "line": 334
2026-07-26T22:33:03.3740900Z             }
2026-07-26T22:33:03.3740981Z           ]
2026-07-26T22:33:03.3741067Z         },
2026-07-26T22:33:03.3741149Z         "int": {
2026-07-26T22:33:03.3741248Z           "complete": false,
2026-07-26T22:33:03.3741324Z           "evidence": []
2026-07-26T22:33:03.3741406Z         },
2026-07-26T22:33:03.3745626Z         "unit": {
2026-07-26T22:33:03.3745764Z           "complete": true,
2026-07-26T22:33:03.3745869Z           "evidence": [
2026-07-26T22:33:03.3745965Z             {
2026-07-26T22:33:03.3746088Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.3746189Z               "line": 704
2026-07-26T22:33:03.3746270Z             },
2026-07-26T22:33:03.3746351Z             {
2026-07-26T22:33:03.3746474Z               "path": "crates/spt/src/picker/data.rs",
2026-07-26T22:33:03.3746566Z               "line": 714
2026-07-26T22:33:03.3746642Z             }
2026-07-26T22:33:03.3746722Z           ]
2026-07-26T22:33:03.3746798Z         }
2026-07-26T22:33:03.3746886Z       }
2026-07-26T22:33:03.3747066Z     },
2026-07-26T22:33:03.3747148Z     {
2026-07-26T22:33:03.3747248Z       "id": "REQ-WORKER-REAP",
2026-07-26T22:33:03.3750061Z       "title": "W-3 (WORKER-TRUTH triage): worker records must not persist indefinitely past their useful life — 6 dead-pid workers leaked OFFLINE on flynn (kill-paths where SubagentStop never fires: parent killed, abort, timeout). The stored rec.pid is the ephemeral worker-start hook process (dead by design — the REQ-HAZARD-DEAD-REC-PID class; NEVER an alive-gate signal). Honest reap signals: (a) parent-session lifecycle — reap the parent's soft-stopped + orphaned workers at parent session-end/boundary and on parent-death detection (a worker cannot outlive its parent's live session); (b) a generous TTL floor since `created` as belt-and-braces. Soft-stop preservation semantics (REQ-HAZARD-SOFT-CLEANUP: results drain before reap) stay honored — reap after drain-or-expiry, never mid-flight hard-delete (cascade-wipe guard rationale stands). Sister shape: claude_skill_owl doctor D-21 orphan-worker GC.",
2026-07-26T22:33:03.3750170Z       "requiredStages": [
2026-07-26T22:33:03.3750249Z         "impl",
2026-07-26T22:33:03.3750388Z         "unit",
2026-07-26T22:33:03.3750469Z         "int"
2026-07-26T22:33:03.3750554Z       ],
2026-07-26T22:33:03.3750635Z       "stages": {
2026-07-26T22:33:03.3750721Z         "doc": {
2026-07-26T22:33:03.3750817Z           "complete": false,
2026-07-26T22:33:03.3750959Z           "evidence": []
2026-07-26T22:33:03.3751041Z         },
2026-07-26T22:33:03.3751122Z         "impl": {
2026-07-26T22:33:03.3751203Z           "complete": true,
2026-07-26T22:33:03.3751288Z           "evidence": [
2026-07-26T22:33:03.3751366Z             {
2026-07-26T22:33:03.3751489Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.3751564Z               "line": 276
2026-07-26T22:33:03.3751651Z             },
2026-07-26T22:33:03.3751729Z             {
2026-07-26T22:33:03.3751851Z               "path": "crates/spt-store/src/worker_reap.rs",
2026-07-26T22:33:03.3751990Z               "line": 59
2026-07-26T22:33:03.3752071Z             },
2026-07-26T22:33:03.3752151Z             {
2026-07-26T22:33:03.3752261Z               "path": "crates/spt-store/src/worker_reap.rs",
2026-07-26T22:33:03.3752353Z               "line": 87
2026-07-26T22:33:03.3752433Z             },
2026-07-26T22:33:03.3752514Z             {
2026-07-26T22:33:03.3752639Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.3752752Z               "line": 279
2026-07-26T22:33:03.3752870Z             }
2026-07-26T22:33:03.3752985Z           ]
2026-07-26T22:33:03.3753100Z         },
2026-07-26T22:33:03.3753257Z         "int": {
2026-07-26T22:33:03.3753410Z           "complete": true,
2026-07-26T22:33:03.3753542Z           "evidence": [
2026-07-26T22:33:03.3753667Z             {
2026-07-26T22:33:03.3753800Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-07-26T22:33:03.3753887Z               "line": 1700
2026-07-26T22:33:03.3753968Z             }
2026-07-26T22:33:03.3754044Z           ]
2026-07-26T22:33:03.3754129Z         },
2026-07-26T22:33:03.3754211Z         "unit": {
2026-07-26T22:33:03.3754302Z           "complete": true,
2026-07-26T22:33:03.3754387Z           "evidence": [
2026-07-26T22:33:03.3754482Z             {
2026-07-26T22:33:03.3754607Z               "path": "crates/spt-store/src/worker_reap.rs",
2026-07-26T22:33:03.3754696Z               "line": 163
2026-07-26T22:33:03.3754773Z             },
2026-07-26T22:33:03.3754855Z             {
2026-07-26T22:33:03.3754987Z               "path": "crates/spt-store/src/worker_reap.rs",
2026-07-26T22:33:03.3755101Z               "line": 173
2026-07-26T22:33:03.3755172Z             },
2026-07-26T22:33:03.3755258Z             {
2026-07-26T22:33:03.3755376Z               "path": "crates/spt-store/src/worker_reap.rs",
2026-07-26T22:33:03.3755470Z               "line": 191
2026-07-26T22:33:03.3755543Z             },
2026-07-26T22:33:03.3755624Z             {
2026-07-26T22:33:03.3755737Z               "path": "crates/spt-store/src/worker_reap.rs",
2026-07-26T22:33:03.3755929Z               "line": 206
2026-07-26T22:33:03.3756014Z             },
2026-07-26T22:33:03.3756095Z             {
2026-07-26T22:33:03.3756210Z               "path": "crates/spt-store/src/worker_reap.rs",
2026-07-26T22:33:03.3756296Z               "line": 225
2026-07-26T22:33:03.3756367Z             },
2026-07-26T22:33:03.3756458Z             {
2026-07-26T22:33:03.3756582Z               "path": "crates/spt-store/src/worker_reap.rs",
2026-07-26T22:33:03.3756663Z               "line": 241
2026-07-26T22:33:03.3756753Z             },
2026-07-26T22:33:03.3756835Z             {
2026-07-26T22:33:03.3756954Z               "path": "crates/spt/src/api/reporting.rs",
2026-07-26T22:33:03.3757034Z               "line": 1486
2026-07-26T22:33:03.3757122Z             }
2026-07-26T22:33:03.3757202Z           ]
2026-07-26T22:33:03.3757292Z         }
2026-07-26T22:33:03.3757368Z       }
2026-07-26T22:33:03.3757451Z     },
2026-07-26T22:33:03.3757536Z     {
2026-07-26T22:33:03.3757645Z       "id": "REQ-WORKER-SID-SYMMETRIC-AUTH",
2026-07-26T22:33:03.3760384Z       "title": "W-2 (WORKER-TRUTH triage, operator-ruled 2026-07-06): worker verbs go sid-symmetric with every sibling id-scoped verb — worker-start mints NO token and worker-stop takes NONE (token custody is undue adapter burden, ruling via perri). Registration STORES the sid it authenticated (the parent's sid at start; today cmd_worker_start hardcodes session_id=\"\" — worker.rs:44 — so a sid-authed stop compares against empty and refuses 100%). Stop accepts the parent's CURRENT sid OR the stored registration sid (a /clear between start and stop rotates the parent's sid; either rotation endpoint is honest custody — the REQ-PSYCHE-SID-CUSTODY rotation reasoning). Under the ruling the field adapter's existing emission (worker-stop <id> --session-id <parent sid>) becomes contract-correct as-is. Publish the frozen verb shape to the docs-site with the landing wave (perri blind-builds from published docs).",
2026-07-26T22:33:03.3760640Z       "requiredStages": [
2026-07-26T22:33:03.3760730Z         "doc",
2026-07-26T22:33:03.3760809Z         "impl",
2026-07-26T22:33:03.3760890Z         "unit",
2026-07-26T22:33:03.3760971Z         "int"
2026-07-26T22:33:03.3761053Z       ],
2026-07-26T22:33:03.3761133Z       "stages": {
2026-07-26T22:33:03.3761214Z         "doc": {
2026-07-26T22:33:03.3761301Z           "complete": true,
2026-07-26T22:33:03.3761391Z           "evidence": [
2026-07-26T22:33:03.3761467Z             {
2026-07-26T22:33:03.3761601Z               "path": "docs-site/src/harness-contract/api.md",
2026-07-26T22:33:03.3761687Z               "line": 311
2026-07-26T22:33:03.3761773Z             }
2026-07-26T22:33:03.3761843Z           ]
2026-07-26T22:33:03.3761921Z         },
2026-07-26T22:33:03.3762002Z         "impl": {
2026-07-26T22:33:03.3762097Z           "complete": true,
2026-07-26T22:33:03.3762182Z           "evidence": [
2026-07-26T22:33:03.3762260Z             {
2026-07-26T22:33:03.3762363Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:03.3762444Z               "line": 185
2026-07-26T22:33:03.3762526Z             },
2026-07-26T22:33:03.3762613Z             {
2026-07-26T22:33:03.3762716Z               "path": "crates/spt/src/api/mod.rs",
2026-07-26T22:33:03.3762807Z               "line": 696
2026-07-26T22:33:03.3762880Z             },
2026-07-26T22:33:03.3762965Z             {
2026-07-26T22:33:03.3763074Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:03.3763161Z               "line": 46
2026-07-26T22:33:03.3763238Z             }
2026-07-26T22:33:03.3763322Z           ]
2026-07-26T22:33:03.3763421Z         },
2026-07-26T22:33:03.3763498Z         "int": {
2026-07-26T22:33:03.3763589Z           "complete": true,
2026-07-26T22:33:03.3763679Z           "evidence": [
2026-07-26T22:33:03.3763760Z             {
2026-07-26T22:33:03.3763889Z               "path": "crates/spt/tests/worker_lifecycle_e2e.rs",
2026-07-26T22:33:03.3763970Z               "line": 26
2026-07-26T22:33:03.3764117Z             },
2026-07-26T22:33:03.3764195Z             {
2026-07-26T22:33:03.3764318Z               "path": "crates/spt/tests/worker_lifecycle_e2e.rs",
2026-07-26T22:33:03.3764408Z               "line": 95
2026-07-26T22:33:03.3764495Z             }
2026-07-26T22:33:03.3764561Z           ]
2026-07-26T22:33:03.3764651Z         },
2026-07-26T22:33:03.3764732Z         "unit": {
2026-07-26T22:33:03.3764829Z           "complete": true,
2026-07-26T22:33:03.3764913Z           "evidence": [
2026-07-26T22:33:03.3764999Z             {
2026-07-26T22:33:03.3765100Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:03.3765182Z               "line": 425
2026-07-26T22:33:03.3765261Z             },
2026-07-26T22:33:03.3765333Z             {
2026-07-26T22:33:03.3765444Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:03.3765529Z               "line": 435
2026-07-26T22:33:03.3765623Z             },
2026-07-26T22:33:03.3765699Z             {
2026-07-26T22:33:03.3765800Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:03.3765888Z               "line": 458
2026-07-26T22:33:03.3765978Z             },
2026-07-26T22:33:03.3766093Z             {
2026-07-26T22:33:03.3766199Z               "path": "crates/spt/src/api/auth.rs",
2026-07-26T22:33:03.3766274Z               "line": 476
2026-07-26T22:33:03.3766365Z             },
2026-07-26T22:33:03.3766441Z             {
2026-07-26T22:33:03.3766588Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:03.3766669Z               "line": 208
2026-07-26T22:33:03.3766752Z             },
2026-07-26T22:33:03.3766832Z             {
2026-07-26T22:33:03.3766937Z               "path": "crates/spt/src/api/worker.rs",
2026-07-26T22:33:03.3767018Z               "line": 240
2026-07-26T22:33:03.3767104Z             }
2026-07-26T22:33:03.3767175Z           ]
2026-07-26T22:33:03.3767280Z         }
2026-07-26T22:33:03.3767362Z       }
2026-07-26T22:33:03.3767452Z     },
2026-07-26T22:33:03.3767576Z     {
2026-07-26T22:33:03.3767692Z       "id": "REQ-XTASK-SPT-BIN-TARGET-DIR",
2026-07-26T22:33:03.3770033Z       "title": "#13 (F026 micro, tooling): xtask `spt_bin()` (crates/xtask/src/main.rs) BUILDS `spt` via cargo (which honors CARGO_TARGET_DIR) but returns a HARDCODED `<root>/target/debug/spt` path — so under a redirected target dir (CI / isolated-gate rigs that set CARGO_TARGET_DIR to a throwaway) the binary lands in `$CARGO_TARGET_DIR/debug` while xtask looks in `<root>/target/debug` -> NotFound -> `xtask check` (docs-drift gate) spuriously fails. Workaround was running `xtask check` with CARGO_TARGET_DIR unset. FIX: a pure `target_debug_dir(root, CARGO_TARGET_DIR)` seam mirroring cargo's resolution — absolute override as-is, relative resolved against `root` (the dir cargo is invoked in), default `<root>/target` — join `debug`; `spt_bin` returns from it. See docs/NEXT-MILESTONE-PICKER-TRIAGE.md.",
2026-07-26T22:33:03.3770151Z       "requiredStages": [
2026-07-26T22:33:03.3770234Z         "impl",
2026-07-26T22:33:03.3770315Z         "unit"
2026-07-26T22:33:03.3770395Z       ],
2026-07-26T22:33:03.3770471Z       "stages": {
2026-07-26T22:33:03.3770549Z         "doc": {
2026-07-26T22:33:03.3770649Z           "complete": false,
2026-07-26T22:33:03.3770738Z           "evidence": []
2026-07-26T22:33:03.3770820Z         },
2026-07-26T22:33:03.3770906Z         "impl": {
2026-07-26T22:33:03.3770996Z           "complete": true,
2026-07-26T22:33:03.3771076Z           "evidence": [
2026-07-26T22:33:03.3771156Z             {
2026-07-26T22:33:03.3771271Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.3771351Z               "line": 157
2026-07-26T22:33:03.3771445Z             },
2026-07-26T22:33:03.3771522Z             {
2026-07-26T22:33:03.3771623Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.3771703Z               "line": 183
2026-07-26T22:33:03.3771784Z             }
2026-07-26T22:33:03.3771861Z           ]
2026-07-26T22:33:03.3771937Z         },
2026-07-26T22:33:03.3772018Z         "int": {
2026-07-26T22:33:03.3772176Z           "complete": false,
2026-07-26T22:33:03.3772266Z           "evidence": []
2026-07-26T22:33:03.3772347Z         },
2026-07-26T22:33:03.3772423Z         "unit": {
2026-07-26T22:33:03.3772524Z           "complete": true,
2026-07-26T22:33:03.3772599Z           "evidence": [
2026-07-26T22:33:03.3772680Z             {
2026-07-26T22:33:03.3772776Z               "path": "crates/xtask/src/main.rs",
2026-07-26T22:33:03.3772867Z               "line": 1682
2026-07-26T22:33:03.3772948Z             }
2026-07-26T22:33:03.3773028Z           ]
2026-07-26T22:33:03.3773111Z         }
2026-07-26T22:33:03.3773201Z       }
2026-07-26T22:33:03.3773276Z     }
2026-07-26T22:33:03.3773362Z   ],
2026-07-26T22:33:03.3773440Z   "findings": []
2026-07-26T22:33:03.3773525Z }
